diff --git a/.gitignore b/.gitignore index f049c86ec2..d786d1c049 100644 --- a/.gitignore +++ b/.gitignore @@ -3,26 +3,27 @@ *.pyo *.sqlite *.sqlite3 -settings_local.py -/celerybeat-schedule -document_storage/ -/misc/mayan.geany -mayan/media/document_cache/ -build/ -_build/ -gpg_home/ -/mayan/media/static/ -/whoosh_index/ -/fabfile_install -/venv/ -.coverage -/dist/ -.idea/ -static_collected/ *egg-info* -mayan/settings/local.py -.vagrant -.tox/ -coverage.xml +.coverage .coverage.tox* +.idea/ +.tox/ +.vagrant +_build/ +build/ +coverage.xml +document_storage/ +gpg_home/ htmlcov/ +mayan/media/ +mayan/media/document_cache/ +mayan/settings/local.py +settings_local.py +static_collected/ +/celerybeat-schedule +/fabfile_install +/dist/ +/misc/mayan.geany +/mayan/media/static/ +/venv/ +/whoosh_index/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c9c0de6789..94741880ab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,7 +21,7 @@ test:mysql: - pip install mysql-python - apt-get install -qq mysql-client - mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" -e "set global character_set_server=utf8mb4;" - - coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci.db_mysql --nomigrations + - coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci.db_mysql --nomigrations - bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN tags: - mysql @@ -30,12 +30,12 @@ test:postgres: - apt-get install -qq libpq-dev - pip install -r requirements/testing.txt - pip install psycopg2 - - coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci.db_postgres --nomigrations + - coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci.db_postgres --nomigrations - bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN tags: - postgres test:sqlite: script: - pip install -r requirements/testing.txt - - coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci --nomigrations + - coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci --nomigrations - bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN diff --git a/.travis.yml b/.travis.yml index fbe358ff14..0e6e7d9293 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,9 +17,9 @@ before_script: - mysql -e 'create database mayan_edms;' - psql -c 'create database mayan_edms;' -U postgres script: - - if [[ $DB == mysql ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.travis.db_mysql --nomigrations; fi - - if [[ $DB == postgres ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.travis.db_postgres --nomigrations; fi - - if [[ $DB == sqlite ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.base --nomigrations; fi + - if [[ $DB == mysql ]]; then coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.travis.db_mysql --nomigrations; fi + - if [[ $DB == postgres ]]; then coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.travis.db_postgres --nomigrations; fi + - if [[ $DB == sqlite ]]; then coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.base --nomigrations; fi after_success: - coveralls branches: diff --git a/.tx/config b/.tx/config index 0f019a35cc..b210567710 100644 --- a/.tx/config +++ b/.tx/config @@ -19,6 +19,12 @@ source_lang = en source_file = mayan/apps/authentication/locale/en/LC_MESSAGES/django.po type = PO +[mayan-edms.cabinets-2-0] +file_filter = mayan/apps/cabinets/locale//LC_MESSAGES/django.po +source_lang = en +source_file = mayan/apps/cabinets/locale/en/LC_MESSAGES/django.po +type = PO + [mayan-edms.checkouts-2-0] file_filter = mayan/apps/checkouts/locale//LC_MESSAGES/django.po source_lang = en @@ -91,12 +97,6 @@ source_lang = en source_file = mayan/apps/folders/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.installation-2-0] -file_filter = mayan/apps/installation/locale//LC_MESSAGES/django.po -source_lang = en -source_file = mayan/apps/installation/locale/en/LC_MESSAGES/django.po -type = PO - [mayan-edms.linking-2-0] file_filter = mayan/apps/linking/locale//LC_MESSAGES/django.po source_lang = en @@ -127,12 +127,6 @@ source_lang = en source_file = mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.mirroring-2-0] -file_filter = mayan/apps/mirroring/locale//LC_MESSAGES/django.po -source_lang = en -source_file = mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po -type = PO - [mayan-edms.motd-2-0] file_filter = mayan/apps/motd/locale//LC_MESSAGES/django.po source_lang = en diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5e114863e9..ce1fd62061 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,7 +17,7 @@ same properties that can trigger the issue and upload that file instead. - Add steps that trigger the issue in a **repeatable manner**. - **Screenshots** go a long way in helping understand problems. - The issue must be related to the code only, do not open issues for problems -with webservers, cloud providers, etc. +with deployments, webservers, cloud providers, etc. - Do not open issues asking for **support or consulting**. Code @@ -40,7 +40,19 @@ following branches: are unstable and should not be used in production. 1. Start making your changes in your own separate branch. -1. Write a test which shows that the bug was fixed or that the feature works as expected. +1. Write a test which shows that the bug was fixed or that the feature works as + expected. +1. Sign your work. Your signature certifies your submission according to the + articles of the [Developer Certificate of Origin](https://gitlab.com/mayan-edms/mayan-edms/blob/master/DCO). + The sign-off should be in the form: + + ```` + Signed-off-by: John Doe + ```` + + You must use your real name and email, pseudonyms or anonymous contributions + are not allowed. If you set your user.name and user.email git configs, you can + sign your commit automatically with git commit -s. 1. Submit a merge request for your changes. Feature requests @@ -64,8 +76,3 @@ Code style ---------- - Refer to the [Development](http://mayan.readthedocs.io/en/latest/topics/development.html) chapter for information and examples of the code style. - -License -------- -By contributing your code, you agree to license your contribution under the -terms of the project's license. diff --git a/DCO b/DCO new file mode 100644 index 0000000000..716561d5d2 --- /dev/null +++ b/DCO @@ -0,0 +1,36 @@ +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. +660 York Street, Suite 102, +San Francisco, CA 94110 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. diff --git a/HISTORY.rst b/HISTORY.rst index 6eba4f722d..0a347ac5ce 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,4 +1,10 @@ -2.2 (2016-XX-XX) +3.0 (2017-XX-XX) +================ +- Metadat widget appearance changes +- Content windows appearance changes +- Add new document's version list view permission + +2.2 (2017-04-26) ================ - Remove the installation app (GitLab #301). - Add support for document page search @@ -15,6 +21,47 @@ the user links - Tags are alphabetically ordered by label (GitLab #342). - Stop loading theme fonts from the web (GitLab #343). - Add support for attaching multiple tags (GitLab #307). +- Integrate the Cabinets app. + +2.1.11 (2017-03-14) +=================== +- Added a quick rename serializer to the document type API serializer. +- Added per document type, workflow list API view. +- Mayan EDMS was adopted a version 1.1 of the Linux Foundation Developer Certificate of Origin. +- Added the detail url of a permission in the permission serializer. +- Added endpoints for the ACL app API. +- Implemented document workflows transition ACLs. GitLab issue #321. +- Add document comments API endpoints. GitHub issue #249. +- Add support for overriding the Celery class. +- Changed the document upload view in source app to not use the HTTP referer + URL blindly, but instead recompose the URL using known view name. Needed + when integrating Mayan EDMS into other app via using iframes. +- Addes size field to the document version serializer. +- Removed the serializer from the deleted document restore API endpoint. +- Added support for adding or editing document types to smart links via the + API. + +2.1.10 (2017-02-13) +=================== +- Update Makefile to use twine for releases. +- Add Makefile target to make test releases. + +2.1.9 (2017-02-13) +================== +- Update make file to Workaround long standing pypa wheel bug #99 + +2.1.8 (2017-02-12) +================== +- Fixes in the trashed document API endpoints. +- Improved tags API PUT and PATCH endpoints. +- Bulk document adding when creating and editing tags. +- The version of django-mptt is preserved in case mayan-cabinets is installed. +- Add Django GPG API endpoints for singing keys. +- Add API endpoints for the document states (workflows) app. +- Add API endpoints for the messsage of the day (MOTD) app. +- Add Smart link API endpoints. +- Add writable versions of the Document and Document Type serializers (GitLab issues #348 and #349). +- Close GitLab issue #310 "Metadata's lookup with chinese messages when new document" 2.1.7 (2017-02-01) ================== @@ -26,7 +73,7 @@ the user links - Enable the parser and validation fields of the metadata serializer. 2.1.6 (2016-11-23) -================= +================== - Fix variable name typo in the rotation transformation class. - Update translations diff --git a/MANIFEST.in b/MANIFEST.in index 4c59f9ed98..4d82143547 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,3 @@ -include README.rst LICENSE HISTORY.rst -recursive-include mayan *.txt *.html *.css *.ico *.png *.jpg *.js *.po *.mo *.ttf *.woff *.woff2 LICENSE +include README.md LICENSE HISTORY.rst mayan/LICENSE +recursive-include mayan/apps *.txt *.html *.css *.ico *.png *.jpg *.js *.po *.mo *.ttf *.woff *.woff2 *.gif *.eot *.svg *.doc *.pdf *.tiff *.sig *.asc *.gpg *.zip global-exclude mayan/settings/local.py mayan/settings/travis/* mayan/media/* diff --git a/Makefile b/Makefile index 5a0fa048d2..4376a85624 100644 --- a/Makefile +++ b/Makefile @@ -7,8 +7,8 @@ help: @echo "clean-pyc - Remove Python artifacts." @echo "clean - Remove Python and build artifacts." - @echo "test MODULE= - Run tests for a single App, module or test class." @echo "test-all - Run all tests." + @echo "test MODULE= - Run tests for a single App, module or test class." @echo "docs_serve - Run the livehtml documentation generator." @echo "translations_make - Refresh all translation files." @@ -23,11 +23,17 @@ help: @echo "sdist - Build the source distribution package." @echo "wheel - Build the wheel distribution package." @echo "release - Package (sdist and wheel) and upload a release." + @echo "test_release - Package (sdist and wheel) and upload to the PyPI test server." @echo "runserver - Run the development server." @echo "runserver_plus - Run the Django extension's development server." @echo "shell_plus - Run the shell_plus command." + @echo "docker_services_on - Launch and initialize production-like services using Docker (Postgres and Redis)." + @echo "docker_services_off - Stop and delete the Docker production-like services." + @echo "docker_services_frontend - Launch a front end instance that uses the production-like services." + @echo "docker_services_worker - Launch a worker instance that uses the production-like services." + @echo "safety_check - Run a package safety check." @@ -52,7 +58,7 @@ test: ./manage.py test $(MODULE) --settings=mayan.settings.testing --nomigrations test-all: - ./manage.py runtests --settings=mayan.settings.testing --nomigrations + ./manage.py test --mayan-apps --settings=mayan.settings.testing --nomigrations # Documentation @@ -90,15 +96,20 @@ requirements_testing: # Releases -release: clean - python setup.py sdist bdist_wheel upload + +test_release: clean wheel + twine upload dist/* -r testpypi + @echo "Test with: pip install -i https://testpypi.python.org/pypi mayan-edms" + +release: clean wheel + twine upload dist/* -r pypi sdist: clean python setup.py sdist ls -l dist -wheel: clean - python setup.py bdist_wheel +wheel: clean sdist + pip wheel --no-index --no-deps --wheel-dir dist dist/*.tar.gz ls -l dist @@ -113,9 +124,25 @@ runserver_plus: shell_plus: ./manage.py shell_plus --settings=mayan.settings.development +docker_services_on: + docker run -d --name redis -p 6379:6379 redis + docker run -d --name postgres -p 5432:5432 postgres + while ! nc -z 127.0.0.1 6379; do sleep 1; done + while ! nc -z 127.0.0.1 5432; do sleep 1; done + sleep 1 + ./manage.py initialsetup --settings=mayan.settings.testing.docker + +docker_services_off: + docker stop postgres redis + docker rm postgres redis + +docker_services_frontend: + ./manage.py runserver --settings=mayan.settings.testing.docker + +docker_services_worker: + ./manage.py celery worker --settings=mayan.settings.testing.docker -B -l INFO -O fair # Security safety_check: safety check - diff --git a/README.md b/README.md new file mode 100644 index 0000000000..8289e70bbc --- /dev/null +++ b/README.md @@ -0,0 +1,78 @@ +[![pypi][pypi]][pypi-url] +[![builds][builds]][builds-url] +[![coverage][cover]][cover-url] +![python][python] +![license][license] + +[pypi]: http://img.shields.io/pypi/v/mayan-edms.svg +[pypi-url]: http://badge.fury.io/py/mayan-edms + +[builds]: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg +[builds-url]: https://gitlab.com/mayan-edms/mayan-edms/pipelines + +[cover]: https://codecov.io/gitlab/mayan-edms/mayan-edms/coverage.svg?branch=master +[cover-url]: https://codecov.io/gitlab/mayan-edms/mayan-edms?branch=master + +[python]: https://img.shields.io/pypi/pyversions/mayan-edms.svg +[python-url]: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat + +[license]: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat +[license-url]: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat + + +
+ + + +
+
+

+ Mayan EDMS is a document management system. Its main purpose is to store, + introspect, and categorize files, with a strong emphasis on preserving the + contextual and business information of documents. It can also OCR, preview, + label, sign, send, and receive thoses files. Other features of interest + are its workflow system, role based access control, and REST API. +

+ +

+ +

+ +
+ +

Installation

+ +The installation procedure uses the Docker container manager (docker.com). Make sure Docker is properly installed and working before attempting to install Mayan EDMS. + +Step 1- Initialize the installation + +```bash +docker run --rm -v mayan_media:/var/lib/mayan \ +-v mayan_settings:/etc/mayan mayanedms/mayanedms mayan:init +``` + +Step 2- Deploy a container + +```bash +docker run -d --name mayan-edms --restart=always -p 80:80 \ +-v mayan_media:/var/lib/mayan -v mayan_settings:/etc/mayan mayanedms/mayanedms +``` + +Step 3- Open a browser and go to http://localhost + + +

Important links

+ + +- [Homepage](http://www.mayan-edms.com) +- [Videos](https://www.youtube.com/channel/UCJOOXHP1MJ9lVA7d8ZTlHPw) +- [Documentation](http://mayan.readthedocs.io/en/stable/) +- [Paid support](http://www.mayan-edms.com/providers/) +- [Roadmap](https://gitlab.com/mayan-edms/mayan-edms/wikis/roadmap) +- [Contributing](https://gitlab.com/mayan-edms/mayan-edms/blob/master/CONTRIBUTING.md) +- [Community forum](https://groups.google.com/forum/#!forum/mayan-edms) +- [Community forum archive](http://mayan-edms.1003.x6.nabble.com/) +- [Source code, issues, bugs](https://gitlab.com/mayan-edms/mayan-edms) +- [Plug-ins, other related projects](https://gitlab.com/mayan-edms/) +- [Translations](https://www.transifex.com/rosarior/mayan-edms/) + diff --git a/README.rst b/README.rst deleted file mode 100644 index 67acd269bb..0000000000 --- a/README.rst +++ /dev/null @@ -1,65 +0,0 @@ -|PyPI badge| |Build Status| |Coverage badge| |Documentation| |License badge| |Python version| - -|Logo| - -Description ------------ - -Free Open Source Electronic Document Management System. - -`Website`_ - -`Video demostration`_ - -`Documentation`_ - -`Translations`_ - -`Mailing list (via Google Groups)`_ - -|Animation| - -License -------- - -This project is open sourced under `Apache 2.0 License`_. - -Installation ------------- - -To install Mayan EDMS, simply do: - -.. code-block:: bash - - $ virtualenv venv - $ source venv/bin/activate - (venv) $ pip install mayan-edms - (venv) $ mayan-edms.py initialsetup - (venv) $ mayan-edms.py runserver - -Point your browser to 127.0.0.1:8000 and use the automatically created admin -account. - - -.. _Website: http://www.mayan-edms.com -.. _Video demostration: http://bit.ly/pADNXv -.. _Documentation: http://readthedocs.org/docs/mayan/en/latest/ -.. _Translations: https://www.transifex.com/projects/p/mayan-edms/ -.. _Mailing list (via Google Groups): http://groups.google.com/group/mayan-edms -.. _Apache 2.0 License: https://www.apache.org/licenses/LICENSE-2.0.txt - -.. |Build Status| image:: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg - :target: https://gitlab.com/mayan-edms/mayan-edms/commits/master -.. |Logo| image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/mayan_logo.png -.. |Animation| image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/overview.gif -.. |PyPI badge| image:: http://img.shields.io/pypi/v/mayan-edms.svg?style=flat - :target: http://badge.fury.io/py/mayan-edms -.. |License badge| image:: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat -.. |Analytics| image:: https://ga-beacon.appspot.com/UA-52965619-2/mayan-edms/readme?pixel -.. |Coverage badge| image:: https://codecov.io/gitlab/mayan-edms/mayan-edms/coverage.svg?branch=master - :target: https://codecov.io/gitlab/mayan-edms/mayan-edms?branch=master -.. |Documentation| image:: https://readthedocs.org/projects/mayan/badge/?version=latest - :target: http://mayan.readthedocs.io/en/latest -.. |Python version| images:: https://img.shields.io/pypi/pyversions/mayan-edms.svg - -|Analytics| diff --git a/contrib/scripts/process_messages.py b/contrib/scripts/process_messages.py index 09dd8d56fd..7f1874540e 100755 --- a/contrib/scripts/process_messages.py +++ b/contrib/scripts/process_messages.py @@ -5,10 +5,10 @@ import optparse import sh APP_LIST = ( - 'acls', 'appearance', 'authentication', 'checkouts', 'common', + 'acls', 'appearance', 'authentication', 'cabinets', 'checkouts', 'common', 'converter', 'django_gpg', 'document_comments', 'document_indexing', 'document_signatures', 'document_states', 'documents', 'dynamic_search', - 'events', 'folders', 'installation', 'linking', 'lock_manager', 'mailer', + 'events', 'folders', 'linking', 'lock_manager', 'mailer', 'metadata', 'mirroring', 'motd', 'navigation', 'ocr', 'permissions', 'rest_api', 'smart_settings', 'sources', 'statistics', 'storage', 'tags', 'user_management' diff --git a/docs/releases/2.1.10.rst b/docs/releases/2.1.10.rst new file mode 100644 index 0000000000..66f9252867 --- /dev/null +++ b/docs/releases/2.1.10.rst @@ -0,0 +1,75 @@ +================================ +Mayan EDMS v2.1.10 release notes +================================ + +Released: February 13, 2017 + +What's new +========== + +This is a micro release equal to the previews version from the user's point of view. +The version number was increase to workaround some issues with the Python +Package Index not allowing re-uploads. + +Changes +------------- + +- Update Makefile to use twine for releases. +- Add Makefile target to make test releases. + +Removals +-------- +* None + +Upgrading from a previous version +--------------------------------- + +Using PIP +~~~~~~~~~ + +Type in the console:: + + $ pip install -U mayan-edms + +the requirements will also be updated automatically. + +Using Git +~~~~~~~~~ + +If you installed Mayan EDMS by cloning the Git repository issue the commands:: + + $ git reset --hard HEAD + $ git pull + +otherwise download the compressed archived and uncompress it overriding the +existing installation. + +Next upgrade/add the new requirements:: + + $ pip install --upgrade -r requirements.txt + +Common steps +~~~~~~~~~~~~ + +Migrate existing database schema with:: + + $ mayan-edms.py performupgrade + +Add new static media:: + + $ mayan-edms.py collectstatic --noinput + +The upgrade procedure is now complete. + + +Backward incompatible changes +============================= + +* None + +Bugs fixed or issues closed +=========================== + +* None + +.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ diff --git a/docs/releases/2.1.11.rst b/docs/releases/2.1.11.rst new file mode 100644 index 0000000000..06415422c8 --- /dev/null +++ b/docs/releases/2.1.11.rst @@ -0,0 +1,94 @@ +================================ +Mayan EDMS v2.1.11 release notes +================================ + +Released: March 14, 2017 + +What's new +========== + +This is a bug-fix release and all users are encouraged to upgrade. The focus +of this micro release was REST API improvement. + +Changes +------------- + +- Added a quick rename serializer to the document type API serializer. +- Added per document type, workflow list API view. The URL for this endpoint is + GET /api/document_states/document_type/{pk}/workflows/ +- Added Developer Certificate of Origin. Mayan EDMS was adopted a version 1.1 of + the Linux Foundation Developer Certificate of Origin. All commits must be + signed (`git commit -s`) in order to be merged. +- Added the detail url of a permission in the permission serializer. +- Added endpoints for the ACL app API. +- Implemented document workflows transition ACLs. GitLab issue #321. +- Add document comments API endpoints. GitHub issue #249. +- Add support for overriding the Celery class. The setting is named + MAYAN_CELERY_CLASS and expects a dotted python path to the class to use. +- Changed the document upload view in source app to not use the HTTP referer + URL blindly, but instead recompose the URL using known view name. Needed + when integrating Mayan EDMS into other app via using iframes. +- Addes size field to the document version serializer. +- Removed the serializer from the deleted document restore API endpoint + it doesn't need a serializer being just an action POST endpoint. +- Added support for adding or editing document types to smart links via the + API. + +Removals +-------- +* None + +Upgrading from a previous version +--------------------------------- + +Using PIP +~~~~~~~~~ + +Type in the console:: + + $ pip install -U mayan-edms + +the requirements will also be updated automatically. + +Using Git +~~~~~~~~~ + +If you installed Mayan EDMS by cloning the Git repository issue the commands:: + + $ git reset --hard HEAD + $ git pull + +otherwise download the compressed archived and uncompress it overriding the +existing installation. + +Next upgrade/add the new requirements:: + + $ pip install --upgrade -r requirements.txt + +Common steps +~~~~~~~~~~~~ + +Migrate existing database schema with:: + + $ mayan-edms.py performupgrade + +Add new static media:: + + $ mayan-edms.py collectstatic --noinput + +The upgrade procedure is now complete. + + +Backward incompatible changes +============================= + +* None + +Bugs fixed or issues closed +=========================== + +* `Github issue #249 `_ Add document comments API [$50 US] +* `GitLab issue #321 `_ Transition ACLS +* `GitLab issue #357 `_ It should be possible to retrieve all workflows for a given DocumentType from the API + +.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ diff --git a/docs/releases/2.1.8.rst b/docs/releases/2.1.8.rst new file mode 100644 index 0000000000..ebe1ae8596 --- /dev/null +++ b/docs/releases/2.1.8.rst @@ -0,0 +1,83 @@ +=============================== +Mayan EDMS v2.1.8 release notes +=============================== + +Released: February 12, 2017 + +What's new +========== + +This is a bug-fix release and all users are encouraged to upgrade. The focus +of this micro release was REST API improvement. + +Changes +------------- + +- Fixes in the trashed document API endpoints. +- Improved tags API PUT and PATCH endpoints. +- Bulk document adding when creating and editing tags. +- The version of django-mptt is preserved in case mayan-cabinets is installed. +- Add Django GPG API endpoints for singing keys. +- Add API endpoints for the document states app. +- Add API endpoints for the messsage of the day (MOTD) app. +- Add Smart link API endpoints. +- Add writable versions of the Document and Document Type serializers (GitLab issues #348 and #349). + +Removals +-------- +* None + +Upgrading from a previous version +--------------------------------- + +Using PIP +~~~~~~~~~ + +Type in the console:: + + $ pip install -U mayan-edms + +the requirements will also be updated automatically. + +Using Git +~~~~~~~~~ + +If you installed Mayan EDMS by cloning the Git repository issue the commands:: + + $ git reset --hard HEAD + $ git pull + +otherwise download the compressed archived and uncompress it overriding the +existing installation. + +Next upgrade/add the new requirements:: + + $ pip install --upgrade -r requirements.txt + +Common steps +~~~~~~~~~~~~ + +Migrate existing database schema with:: + + $ mayan-edms.py performupgrade + +Add new static media:: + + $ mayan-edms.py collectstatic --noinput + +The upgrade procedure is now complete. + + +Backward incompatible changes +============================= + +* None + +Bugs fixed or issues closed +=========================== + +* `GitLab issue #310 `_ Metadata's lookup with chinese messages when new document +* `GitLab issue #348 `_ REST API: Document version comments are not getting updated +* `GitLab issue #349 `_ REST API: Document Label, Description are not able to update + +.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ diff --git a/docs/releases/2.1.9.rst b/docs/releases/2.1.9.rst new file mode 100644 index 0000000000..f9c3333e86 --- /dev/null +++ b/docs/releases/2.1.9.rst @@ -0,0 +1,74 @@ +=============================== +Mayan EDMS v2.1.9 release notes +=============================== + +Released: February 13, 2017 + +What's new +========== + +This is a micro release equal to the previews version from the user's point of view. +The version number was increase to workaround some issues with the Python +Package Index not allowing re-uploads. + +Changes +------------- + +- Update make file to Workaround long standing pypa wheel bug #99 + +Removals +-------- +* None + +Upgrading from a previous version +--------------------------------- + +Using PIP +~~~~~~~~~ + +Type in the console:: + + $ pip install -U mayan-edms + +the requirements will also be updated automatically. + +Using Git +~~~~~~~~~ + +If you installed Mayan EDMS by cloning the Git repository issue the commands:: + + $ git reset --hard HEAD + $ git pull + +otherwise download the compressed archived and uncompress it overriding the +existing installation. + +Next upgrade/add the new requirements:: + + $ pip install --upgrade -r requirements.txt + +Common steps +~~~~~~~~~~~~ + +Migrate existing database schema with:: + + $ mayan-edms.py performupgrade + +Add new static media:: + + $ mayan-edms.py collectstatic --noinput + +The upgrade procedure is now complete. + + +Backward incompatible changes +============================= + +* None + +Bugs fixed or issues closed +=========================== + +* None + +.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ diff --git a/docs/releases/2.2.rst b/docs/releases/2.2.rst index 9c01310a9a..556dcb5d30 100644 --- a/docs/releases/2.2.rst +++ b/docs/releases/2.2.rst @@ -2,32 +2,160 @@ Mayan EDMS v2.2 release notes ============================= -Released: XX, 2017 +Released: April 26, 2017 What's new ========== +API changes +----------- +Refactor of the metadata API URLs to use the resource/sub resource paradigm. + +Before: + +/api/metadata/metadata_types/ +/api/metadata/metadata_types/{pk}/ +/api/metadata/document/metadata/{pk}/ +/api/metadata/document/{pk}/metadata/ +/api/metadata/document_type/{document_type_pk}/metadata_types/optional/ +/api/metadata/document_type/{document_type_pk}/metadata_types/required/ + +After: + +/api/metadata/metadata_types/ +/api/metadata/metadata_types/{metadata_type_pk}/ +/api/metadata/document_types/{document_type_pk}/metadata_types/ +/api/metadata/document_types/{document_type_pk}/metadata_types/{metadata_type_pk}/ +/api/metadata/documents/{document_pk}/metadata/ +/api/metadata/documents/{document_pk}/metadata/{metadata_pk}/ + + +Document API URLs updated to use the resource/sub resource paradigm. +Before: + +/api/documents/document_version +/api/documents/document_pages + +After: +/api/documents//version/ +/api/documents//version//pages/ + +Fields that reference a resource by URL now have the suffix '_url' to differentiate +then from fields include the resource. + +Before: + +'document': '/api/documents/10' + +After: + +'document_url': '/api/documents/10' + +Removal of the document version revert API endpoint. To revert a document to a +previous version using the API, use the DELETE verb to delete the most recent +document version to be discarded. + +Pages data is no longer included as part of the version data. Instead a link to +the document version's pages has been added by the name 'pages_url'. This +resolved to '/api/documents//pages//pages'. + +- New API endpoints (initial work by @lokeshmanmode): + + - API endpoint to change an user's groups subscription. + - API endpoint that list all available permissions types. + - API endpoint to view or change a role's groups. + - API endpoint to view or change a role's permissions. + +Code cleanups +------------- +As with every release time was dedicated to improve the organization, size, and +readability of code. To this end the licenses of each app were moved to their +own module in every app, called licenses.py. As part of the code cleanup the +seldom used app called 'installation' which tracked runtime Python packages +installed alongside Mayan EDMS for debugging purposes has been removed. The +dependency on django-filetransfer has been removed by using +django-downloadviews which allows the creation of class based download views. + +Performance +----------- +The document language list has been moved from the document model to the +document form. This change speeds up loading time, document properties views +and API documentation views. This version includes the new image caching +pipeline which stores transformed (rotated, scaled, etc) versions of the +document's images resulting in an overall display loading speed up. The fonts +used are now loaded from Mayan EDMS itself and not from the web. This change +also allow Mayan EDMS to work in a completely off-line manner. + +Searching +--------- +Support for searching pages as well as documents has been added. This +functionality has been exposed in the API too. + +Security +-------- +This release enables the password validation for the user password validation +support provided by Django. This change allows administrator to set password +policies limiting the minimum amount of characters needed for example. For +more information on how to configure the password validation feature refer +to Django's documentation at: https://docs.djangoproject.com/en/1.11/topics/auth/passwords/#enabling-password-validation + +Sources +------- +To help test the interval sources (POP3 Email, IMAP Email, Watch folders) a +"Check now" button was added that allows users to trigger the source's +document fetching code instantly. Previously users had to wait until the next +scheduled interval to verify if their source's settings were correct. + +Testing +------- +The testing process has been simplified by adding a new option '--mayan-apps' +to the test runner that automatically tests all Mayan EDMS apps that report to +include tests. The app flag that indicates when an app has test was changed +from 'test' to the more explicit 'has_test'. The packaging manifest now +includes test files, this means that tests can now be executed in production. +The total number of tests was raised to 359 and the total coverage increased +to 81%. + +A custom test runner replacing the previous custom management command +called `runtests`. Testing for orphaned temporary files and orphaned file +handles is now optional and controlled by the COMMON_TEST_FILE_HANDLES and +COMMON_TEST_FILE_HANDLES settings. + +User interface +-------------- +To avoid warping on long full names or usernames, the user's full name or +username is no longer displayed in the main menu. Instead the word "Profile" +is displayed and the users's full name or username is displayed when the +"Profile" icon is clicked. Drop down menus support has been added and enabled +for several apps like documents, folders, and tags. This change make navigation +much faster and required less mouse travel. + +Support was added for a dashboard widgets and several default widgets are +included and enabled. + +A view to clone a document page transformation to other pages has been added. +A document page transformation navigation bug has been fixed. To aid visual +lookup, tags are now alphabetically ordered by label. + +A new workflow view that lists documents currently executing a workflow and +documents by their specific current workflow state has been added to the +main menu. Other changes ------------- -- Remove the installation app -- Add support for page search -- Remove recent searches feature -- Remove dependency on the django-filetransfer library -- Fix height calculation in resize transformation -- Improve upgrade instructions -- New image caching pipeline -- New drop down menus for the documents, folders and tags app as well as for - the user links -- Dashboard -- Moved licenses to their own module in every app -- Update project to work with Django 1.10.4 -- Tags are alphabetically ordered by label -- Stop loading theme fonts from the web +- Cabinets app is now integrated as a core app. +- Now that the Cabinets app is included, the Folders app has been disabled + by default. To enable the Folders apps add the following line to your + settings/local.py file:: + + INSTALLED_APPS += ('folders',) + +- Fix height calculation in resize transformation. +- Improve upgrade instructions. +- Update project to work with Django 1.10. - Add support for attaching multiple tags to single or multiple documents. - Refactor the workflow for removing tags from single and multiple documents. - Move new version creation blocking from the documents app to the checkouts app. -- Sample documents moved to distribution to allow running all tests in production. - DEBUG now defaults to False. - Production settings don't override the DEBUG variable. DEBUG can be set to True on production install to debug errors live. @@ -38,20 +166,7 @@ Other changes - Addition of a new OCR backend using PyOCR. This backend tries first to do OCR using libtesseract. If libtesseract is not available the backend defaults to calling the Tesseract executable. -- Language list moved from document model to document form. -- Enable password validation for the user password change view, user password change API endpoint, current user view and current user API endpoint. -- New API endpoints (initial work by @lokeshmanmode): - - - API endpoint to change an user's groups subscription. - - API endpoint that list all available permissions types. - - API endpoint to view or change a role's groups. - - API endpoint to view or change a role's permissions. - - Make the lock_manager.backends.file_lock.FileLock the new default locking backend. -- Add view to clone a document page transformation to other pages. -- Document page transformation navigation bug fixed. -- Move test total to 359. -- Increase test coverage to 81%. - New transformations added: - Rotate 90 degrees @@ -62,11 +177,15 @@ Other changes - Gaussian blur - Unsharp masking +- Add tool to launch all workflows. GitLab issue #355 + Removals -------- - Removal of the OCR_TESSERACT_PATH configuration setting. - Removal of the Tesseract OCR backend. Replaced with a PyOCR backend. - Remove usage of pytesseract Python library. +- Installation app. +- Recent searches feature. Upgrading from a previous version --------------------------------- @@ -95,13 +214,13 @@ Manually upgrade/add the new requirements:: $ pip install --upgrade -r requirements.txt -Common steps -~~~~~~~~~~~~ - Remove deprecated requirements:: $ pip uninstall -y -r removals.txt +Common steps +~~~~~~~~~~~~ + Migrate existing database schema with:: $ mayan-edms.py performupgrade @@ -134,5 +253,6 @@ Bugs fixed or issues closed * `GitLab issue #328 `_ Upgrade Warning/Error during performupgrade (v2.1.3 to v2.1.4) * `GitLab issue #342 `_ Tags should be of unordered / unsorted data type * `GitLab issue #343 `_ Bootstrap's dependency on fonts.googleapis.com causes Mayan EDMS web interface load slowly if public internet is unreachable +* `GitLab issue #355 `_ Workflow changes only on new added documents .. _PyPI: https://pypi.python.org/pypi/mayan-edms/ diff --git a/docs/releases/3.0.rst b/docs/releases/3.0.rst new file mode 100644 index 0000000000..0658a6baf6 --- /dev/null +++ b/docs/releases/3.0.rst @@ -0,0 +1,81 @@ +============================= +Mayan EDMS v3.0 release notes +============================= + +Released: XX XX, 2017 + +What's new +========== + + +Other changes +------------- +- Metadat widget appearance changes +- Content windows appearance changes +- Add new document's version list view permission +- Resource based API endpoints +- SANE scanner document source + +Removals +-------- +- None + +Upgrading from a previous version +--------------------------------- + +If installed via PIP +~~~~~~~~~~~~~~~~~~~~ + +Type in the console:: + + $ pip install -U mayan-edms + +the requirements will also be updated automatically. + +If installed using Git +~~~~~~~~~~~~~~~~~~~~~~ + +If you installed Mayan EDMS by cloning the Git repository issue the commands:: + + $ git reset --hard HEAD + $ git pull + +otherwise download the compressed archived and uncompress it overriding the +existing installation. + +Manually upgrade/add the new requirements:: + + $ pip install --upgrade -r requirements.txt + +Remove deprecated requirements:: + + $ pip uninstall -y -r removals.txt + +Common steps +~~~~~~~~~~~~ + +Migrate existing database schema with:: + + $ mayan-edms.py performupgrade + +Add new static media:: + + $ mayan-edms.py collectstatic --noinput + +The upgrade procedure is now complete. + + +Backward incompatible changes +============================= + +* None + +Bugs fixed or issues closed +=========================== + +* `GitLab issue #366 `_ Proofread documentation +* `GitLab issue #379 `_ Add new document version list view permission. +* `GitLab issue #379 `_ Add new document version list view permission. + + +.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ diff --git a/docs/releases/index.rst b/docs/releases/index.rst index 65650cab3d..091513a7f8 100644 --- a/docs/releases/index.rst +++ b/docs/releases/index.rst @@ -23,6 +23,10 @@ versions of the documentation contain the release notes for any later releases. :maxdepth: 1 2.2 + 2.1.11 + 2.1.10 + 2.1.9 + 2.1.8 2.1.7 2.1.6 2.1.5 diff --git a/docs/topics/deploying.rst b/docs/topics/deploying.rst index f16bbd59ad..8952357901 100644 --- a/docs/topics/deploying.rst +++ b/docs/topics/deploying.rst @@ -3,7 +3,8 @@ Advanced deployment =================== Mayan EDMS should be deployed like any other Django_ project and -preferably using virtualenv_. +preferably using virtualenv_. Below are some ways to deploy and use Mayan EDMS. +Do not use more than one method. Being a Django_ and a Python_ project, familiarity with these technologies is recommended to better understand why Mayan EDMS does some of the things it @@ -58,7 +59,7 @@ to /usr/bin/ with ... sudo ln -s /opt/local/bin/tesseract /usr/bin/tesseract -... alternatively set the paths in the ``settings/locals.py`` +Alternatively, set the paths in the ``settings/locals.py`` .. code-block:: python @@ -76,9 +77,9 @@ With Homebrew installed run the command: Set the Binary paths ******************** -Mayan EDMS by default will look in /usr/bin/ for the binary files it needs -so either you can symlink the binaries installed via brew in /usr/local/bin/ -to /usr/bin/ with ... +Mayan EDMS by default will look in /usr/bin/ for the binary files it needs. +You can symlink the binaries installed via brew in /usr/local/bin/ +to /usr/bin/ with: .. code-block:: bash @@ -87,7 +88,7 @@ to /usr/bin/ with ... sudo ln -s /usr/local/bin/pdftotext /usr/bin/pdftotext && \ sudo ln -s /usr/local/bin/gs /usr/bin/gs -... alternatively set the paths in the ``settings/locals.py`` +Alternatively, set the paths in the ``settings/locals.py`` .. code-block:: python @@ -265,15 +266,18 @@ Make the installation directory readable and writable by the webserver user:: chown www-data:www-data /usr/share/mayan-edms -R -Restart the services:: +Enable and restart the services [1_]:: systemctl enable supervisor systemctl restart supervisor systemctl restart nginx +[1]: https://bugs.launchpad.net/ubuntu/+source/supervisor/+bug/1594740 + .. _Debian: http://www.debian.org/ .. _Django: http://www.djangoproject.com/ .. _Python: http://www.python.org/ .. _SQLite: https://www.sqlite.org/ .. _Ubuntu: http://www.ubuntu.com/ .. _virtualenv: http://www.virtualenv.org/en/latest/index.html +.. _1: https://bugs.launchpad.net/ubuntu/+source/supervisor/+bug/1594740 diff --git a/docs/topics/development.rst b/docs/topics/development.rst index 46fcf90bd4..91312b2165 100644 --- a/docs/topics/development.rst +++ b/docs/topics/development.rst @@ -16,8 +16,8 @@ request on GitLab_. Project philosophies -------------------- -How to think about Mayan EDMS when doing changes or adding new features, -why things are the way they are in Mayan EDMS. +How to think about Mayan EDMS when doing changes or adding new features; +why things are the way they are in Mayan EDMS: - Functionality must be as market/sector independent as possible, code for the 95% of use cases. @@ -36,7 +36,7 @@ why things are the way they are in Mayan EDMS. not viable/mature/efficient. - Each app is as independent and self contained as possible. Exceptions, the basic requirements: navigation, permissions, common, main. -- If an app is meant to be used by more than one other app it should be as +- If an app is meant to be used by more than one other app, it should be as generic as possible in regard to the project and another app will bridge the functionality. - Example: since indexing (document_indexing) only applies to documents, the @@ -48,7 +48,7 @@ Coding conventions Follow PEP8 ~~~~~~~~~~~ -Whenever possible, but don't obsess over things like line length. +Whenever possible, but don't obsess over things like line length: .. code-block:: bash @@ -103,9 +103,9 @@ Example: ) from .models import Index, IndexInstanceNode, DocumentRenameCount -All local app module imports are in relative form, local app module name is to +All local app module imports are in relative form. Local app module name is to be referenced as little as possible, unless required by a specific feature, -trick, restriction, ie: Runtime modification of the module's attributes. +trick, restriction (e.g., Runtime modification of the module's attributes). Incorrect: @@ -128,7 +128,7 @@ Dependencies Mayan EDMS apps follow a hierarchical model of dependency. Apps import from their parents or siblings, never from their children. Think plugins. A parent app must never assume anything about a possible existing child app. The -documents app and the Document model are the basic entities they must never +documents app and the Document model are the basic entities; they must never import anything else. The common and main apps are the base apps. @@ -423,3 +423,16 @@ Wheel package $ pip install /dist/mayan_edms-x.y.z-py2-none-any.whl $ mayan-edms.py initialsetup $ mayan-edms.py runserver + + +Version numbering +~~~~~~~~~~~~~~~~~ + +Mayan EDMS uses the Semantic Versioning (http://semver.org/) method to choose +version numbers along with Python's PEP-0440 (https://www.python.org/dev/peps/pep-0440/) +to format them. + +X.YaN # Alpha release +X.YbN # Beta release +X.YrcN # Release Candidate +X.Y # Final release diff --git a/docs/topics/features.rst b/docs/topics/features.rst index 33d32c7159..3d93dc0145 100644 --- a/docs/topics/features.rst +++ b/docs/topics/features.rst @@ -30,7 +30,7 @@ Features * Dynamic default values for metadata. * Metadata fields can have an initial value, which can be static or determined - by an user provided template code snippet. + by a template code snippet provided by the user. * Documents can be uploaded from different sources. @@ -68,7 +68,7 @@ Features * Multi page document support. - * Multiple page PDFs and TIFFs files are supported. + * Multiple page PDF and TIFF files are supported. * Automatic OCR processing. diff --git a/docs/topics/transformations.rst b/docs/topics/transformations.rst index ffde0c7c7c..ebe4355be8 100644 --- a/docs/topics/transformations.rst +++ b/docs/topics/transformations.rst @@ -2,21 +2,20 @@ Transformations =============== -Transformation are persistent manipulations to the previews of the stored -documents. For example: a scanning equipment may only produce landscape PDFs. -In this case an useful transformation for that document source would be to -rotate all documents scanned by 270 degrees after being uploaded, this way -whenever a document is uploaded from that scanner it will appear in portrait -orientation. In this case add a this transformation to the Mayan EDMS source -that is connected to that device this way all pages scanned via that source -with inherit the transformation as they are created. +Transformations are persistent manipulations to the previews of the stored +documents. For example: a scanning equipment may only produce landscape PDFs. +In this case a useful transformation for that document source would be to rotate +all scanned documents by 270 degrees after being uploaded. By adding this +transformation to the Mayan EDMS source that is connected to the scanner, all +pages scanned via that source will inherit the transformation as they are +created. The result is that whenever a document is uploaded from that scanner, +it will appear in portrait orientation, instead of landscape orientation. -Transformations can also be added to existing documents, by clicking on a -document's page, then clicking on "transformations". In this view the Actions -menu will have a new option that reads "Create new transformation". At the -moment the rotation, zoom, crop, and resize transformations are available. -Once the document image has been corrected resubmit it for OCR for improved -results. +Transformations can also be added to existing documents by clicking on a +document's page and then clicking on "transformations". In this view the Actions +menu will have a new option that reads "Create new transformation". Currently, +the available transformations are: rotation, zoom, crop, and resize. Once the +document image has been corrected, resubmit it for OCR for improved results. -Transformations are not destructive and do not physically modify the document +Transformations are not destructive and do not physically modify the document file, they just modify the document's graphical representation. diff --git a/mayan/__init__.py b/mayan/__init__.py index 43c74b02a1..b392e99e1e 100644 --- a/mayan/__init__.py +++ b/mayan/__init__.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals __title__ = 'Mayan EDMS' -__version__ = '2.1.7' -__build__ = 0x020107 +__version__ = '2.2' +__build__ = 0x020200 __author__ = 'Roberto Rosario' __author_email__ = 'roberto.rosario@mayan-edms.com' __description__ = 'Free Open Source Electronic Document Management System' diff --git a/mayan/apps/acls/api_views.py b/mayan/apps/acls/api_views.py new file mode 100644 index 0000000000..a93f3e09c8 --- /dev/null +++ b/mayan/apps/acls/api_views.py @@ -0,0 +1,250 @@ +from __future__ import absolute_import, unicode_literals + +from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import PermissionDenied +from django.shortcuts import get_object_or_404 + +from rest_framework import generics + +from permissions import Permission + +from .models import AccessControlList +from .permissions import permission_acl_edit, permission_acl_view +from .serializers import ( + AccessControlListPermissionSerializer, AccessControlListSerializer, + WritableAccessControlListPermissionSerializer, + WritableAccessControlListSerializer +) + + +class APIObjectACLListView(generics.ListCreateAPIView): + def get(self, *args, **kwargs): + """ + Returns a list of all the object's access control lists + """ + + return super(APIObjectACLListView, self).get(*args, **kwargs) + + def get_content_object(self): + content_type = get_object_or_404( + ContentType, app_label=self.kwargs['app_label'], + model=self.kwargs['model'] + ) + + content_object = get_object_or_404( + content_type.model_class(), pk=self.kwargs['object_pk'] + ) + + if self.request.method == 'GET': + permission_required = permission_acl_view + else: + permission_required = permission_acl_edit + + try: + Permission.check_permissions( + self.request.user, permissions=(permission_required,) + ) + except PermissionDenied: + AccessControlList.objects.check_access( + permission_required, self.request.user, content_object + ) + + return content_object + + def get_queryset(self): + return self.get_content_object().acls.all() + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + + return { + 'content_object': self.get_content_object(), + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } + + def get_serializer_class(self): + if self.request.method == 'GET': + return AccessControlListSerializer + else: + return WritableAccessControlListSerializer + + def post(self, *args, **kwargs): + """ + Create a new access control list for the selected object. + """ + + return super(APIObjectACLListView, self).post(*args, **kwargs) + + +class APIObjectACLView(generics.RetrieveDestroyAPIView): + serializer_class = AccessControlListSerializer + + def delete(self, *args, **kwargs): + """ + Delete the selected access control list. + """ + + return super(APIObjectACLView, self).delete(*args, **kwargs) + + def get(self, *args, **kwargs): + """ + Returns the details of the selected access control list. + """ + + return super(APIObjectACLView, self).get(*args, **kwargs) + + def get_content_object(self): + if self.request.method == 'GET': + permission_required = permission_acl_view + else: + permission_required = permission_acl_edit + + content_type = get_object_or_404( + ContentType, app_label=self.kwargs['app_label'], + model=self.kwargs['model'] + ) + + content_object = get_object_or_404( + content_type.model_class(), pk=self.kwargs['object_pk'] + ) + + try: + Permission.check_permissions( + self.request.user, permissions=(permission_required,) + ) + except PermissionDenied: + AccessControlList.objects.check_access( + permission_required, self.request.user, content_object + ) + + return content_object + + def get_queryset(self): + return self.get_content_object().acls.all() + + +class APIObjectACLPermissionListView(generics.ListCreateAPIView): + def get(self, *args, **kwargs): + """ + Returns the access control list permission list. + """ + + return super( + APIObjectACLPermissionListView, self + ).get(*args, **kwargs) + + def get_acl(self): + return get_object_or_404( + self.get_content_object().acls, pk=self.kwargs['pk'] + ) + + def get_content_object(self): + content_type = get_object_or_404( + ContentType, app_label=self.kwargs['app_label'], + model=self.kwargs['model'] + ) + + content_object = get_object_or_404( + content_type.model_class(), pk=self.kwargs['object_pk'] + ) + + try: + Permission.check_permissions( + self.request.user, permissions=(permission_acl_view,) + ) + except PermissionDenied: + AccessControlList.objects.check_access( + permission_acl_view, self.request.user, content_object + ) + + return content_object + + def get_queryset(self): + return self.get_acl().permissions.all() + + def get_serializer_class(self): + if self.request.method == 'GET': + return AccessControlListPermissionSerializer + else: + return WritableAccessControlListPermissionSerializer + + def get_serializer_context(self): + return { + 'acl': self.get_acl(), + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } + + def post(self, *args, **kwargs): + """ + Add a new permission to the selected access control list. + """ + + return super( + APIObjectACLPermissionListView, self + ).post(*args, **kwargs) + + +class APIObjectACLPermissionView(generics.RetrieveDestroyAPIView): + lookup_url_kwarg = 'permission_pk' + serializer_class = AccessControlListPermissionSerializer + + def delete(self, *args, **kwargs): + """ + Remove the permission from the selected access control list. + """ + + return super( + APIObjectACLPermissionView, self + ).delete(*args, **kwargs) + + def get(self, *args, **kwargs): + """ + Returns the details of the selected access control list permission. + """ + + return super( + APIObjectACLPermissionView, self + ).get(*args, **kwargs) + + def get_acl(self): + return get_object_or_404( + self.get_content_object().acls, pk=self.kwargs['pk'] + ) + + def get_content_object(self): + content_type = get_object_or_404( + ContentType, app_label=self.kwargs['app_label'], + model=self.kwargs['model'] + ) + + content_object = get_object_or_404( + content_type.model_class(), pk=self.kwargs['object_pk'] + ) + + try: + Permission.check_permissions( + self.request.user, permissions=(permission_acl_view,) + ) + except PermissionDenied: + AccessControlList.objects.check_access( + permission_acl_view, self.request.user, content_object + ) + + return content_object + + def get_queryset(self): + return self.get_acl().permissions.all() + + def get_serializer_context(self): + return { + 'acl': self.get_acl(), + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } diff --git a/mayan/apps/acls/apps.py b/mayan/apps/acls/apps.py index ebce7ca4ce..8825df70b2 100644 --- a/mayan/apps/acls/apps.py +++ b/mayan/apps/acls/apps.py @@ -4,18 +4,21 @@ from django.utils.translation import ugettext_lazy as _ from common import MayanAppConfig, menu_object, menu_sidebar from navigation import SourceColumn +from rest_api.classes import APIEndPoint from .links import link_acl_create, link_acl_delete, link_acl_permissions class ACLsApp(MayanAppConfig): + has_tests = True name = 'acls' - test = True verbose_name = _('ACLs') def ready(self): super(ACLsApp, self).ready() + APIEndPoint(app=self, version_string='1') + AccessControlList = self.get_model('AccessControlList') SourceColumn( diff --git a/mayan/apps/acls/classes.py b/mayan/apps/acls/classes.py index 9ddaa03428..30ec654778 100644 --- a/mayan/apps/acls/classes.py +++ b/mayan/apps/acls/classes.py @@ -14,10 +14,18 @@ class ModelPermission(object): @classmethod def register(cls, model, permissions): + from django.contrib.contenttypes.fields import GenericRelation + cls._registry.setdefault(model, []) for permission in permissions: cls._registry[model].append(permission) + AccessControlList = apps.get_model( + app_label='acls', model_name='AccessControlList' + ) + + model.add_to_class('acls', GenericRelation(AccessControlList)) + @classmethod def get_for_instance(cls, instance): StoredPermission = apps.get_model( @@ -36,7 +44,9 @@ class ModelPermission(object): if proxy: permissions.extend(cls._registry.get(proxy)) - pks = [permission.stored_permission.pk for permission in set(permissions)] + pks = [ + permission.stored_permission.pk for permission in set(permissions) + ] return StoredPermission.objects.filter(pk__in=pks) @classmethod diff --git a/mayan/apps/acls/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/ar/LC_MESSAGES/django.mo index b9f8dfab00..e06fb66b2a 100644 Binary files a/mayan/apps/acls/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/ar/LC_MESSAGES/django.po b/mayan/apps/acls/locale/ar/LC_MESSAGES/django.po index 61c00a6c9a..e2ad3b79f8 100644 --- a/mayan/apps/acls/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/ar/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -18,29 +18,29 @@ msgstr "" "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" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "ACLs" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "الصلاحيات" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Insufficient access." @@ -52,13 +52,13 @@ msgstr "" msgid "Access entries" msgstr "" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "لا شيء" @@ -74,36 +74,67 @@ msgstr "Edit ACLs" msgid "View ACLs" msgstr "View ACLs" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -222,8 +253,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/bg/LC_MESSAGES/django.mo index 74502f8b6e..749a38b49f 100644 Binary files a/mayan/apps/acls/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/bg/LC_MESSAGES/django.po b/mayan/apps/acls/locale/bg/LC_MESSAGES/django.po index 39fafedd71..8f94c7cd35 100644 --- a/mayan/apps/acls/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/bg/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -18,29 +18,29 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "ACLs" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Разрешения" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Недостатъчен достъп." @@ -52,13 +52,13 @@ msgstr "достъп вписване" msgid "Access entries" msgstr "достъп вписвания" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Няма" @@ -74,36 +74,67 @@ msgstr "Редактиране на контролни списъци за до msgid "View ACLs" msgstr "Преглед на контролни списъци за достъп" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -222,8 +253,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.mo index 5c9f8b61fb..7177f4cbca 100644 Binary files a/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.po index 865445f1bd..7e8a13f310 100644 --- a/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -18,29 +18,29 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "ACLs" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Dozvole" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Nedovoljne dozvole." @@ -52,13 +52,13 @@ msgstr "" msgid "Access entries" msgstr "" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Nijedno" @@ -74,36 +74,67 @@ msgstr "Izmjeniti ACLs" msgid "View ACLs" msgstr "Pregledati ACLs" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -222,8 +253,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/da/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/da/LC_MESSAGES/django.mo index eb11dcead6..5eb4d42801 100644 Binary files a/mayan/apps/acls/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/da/LC_MESSAGES/django.po b/mayan/apps/acls/locale/da/LC_MESSAGES/django.po index b8af335bed..7dfff266a1 100644 --- a/mayan/apps/acls/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/da/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -18,29 +18,29 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "ACLs" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "" @@ -52,13 +52,13 @@ msgstr "" msgid "Access entries" msgstr "" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Ingen" @@ -74,36 +74,67 @@ msgstr "" msgid "View ACLs" msgstr "" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -222,8 +253,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.mo index ea41af0579..1ef1e3a7fc 100644 Binary files a/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.po index 8dac75b4c2..9a48f5c37c 100644 --- a/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.po @@ -5,14 +5,15 @@ # Translators: # Translators: # Berny , 2015 +# Jesaja Everling , 2017 # Tobias Paepke , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-31 18:56+0000\n" -"Last-Translator: Tobias Paepke \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-24 23:10+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,29 +21,29 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "Zugriffsberechtigungen" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Berechtigungen" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "Rolle" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "Löschen" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "Neue Berechtigung" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Fehlende Berechtigung" @@ -54,13 +55,13 @@ msgstr "Berechtigungseintrag" msgid "Access entries" msgstr "Berechtigungseinträge" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "Berechtigungen \"%(permissions)s\" zur Rolle \"%(role)s\" für \"%(object)s\"" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Keine" @@ -76,36 +77,67 @@ msgstr "Zugriffsberechtigungen bearbeiten" msgid "View ACLs" msgstr "Zugriffsberechtigungen anzeigen" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "API URL für die Liste der Berechtigungen dieser ACL" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "API URL für die Berechtigung in Relation zur ACL zu der sie zugeordnet ist. Diese URL unterscheidet sich von der normalen Workflow URL." + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "Primary key der zur ACL hinzuzufügenden Berechtigung." + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "Keine solche Berechtigung: %s" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "Durch Komma getrennte Liste von Primary Keys der zu dieser ACL hinzuzufügenden Berechtigungen." + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "Primary Key der Rolle die dieser ACL zugeordnet ist." + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "Neue Zugriffsberechtigung für %s" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "ACL \"%s\" löschen" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "Zugriffsberechtigungen für %s" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "Verfügbare Berechtigungen" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "Erteilte Berechtigungen" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "Berechtigungen von Rolle \"%(role)s\" für \"%(object)s\"" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "Deaktivierte Berechtigungen sind von einem übergeordneten Objekt vererbt." @@ -224,8 +256,5 @@ msgstr "Deaktivierte Berechtigungen sind von einem übergeordneten Objekt vererb #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/en/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/en/LC_MESSAGES/django.mo index 68dfeacb7c..fd86122b05 100644 Binary files a/mayan/apps/acls/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/en/LC_MESSAGES/django.po b/mayan/apps/acls/locale/en/LC_MESSAGES/django.po index 25d5608a7d..a26cfcd6ee 100644 --- a/mayan/apps/acls/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2012-02-02 18:20+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,32 +18,32 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "ACLs" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 #, fuzzy msgid "Permissions" msgstr "permissions" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #, fuzzy #| msgid "Roles" msgid "Role" msgstr "Roles" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "" -#: links.py:35 +#: links.py:39 #, fuzzy #| msgid "View ACLs" msgid "New ACL" msgstr "View ACLs" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Insufficient access." @@ -57,13 +57,13 @@ msgstr "access entry" msgid "Access entries" msgstr "access entries" -#: models.py:48 +#: models.py:49 #, fuzzy, python-format #| msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -#: models.py:64 +#: models.py:66 msgid "None" msgstr "" @@ -79,38 +79,69 @@ msgstr "Edit ACLs" msgid "View ACLs" msgstr "View ACLs" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, fuzzy, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "permission" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, fuzzy, python-format msgid "New access control lists for: %s" msgstr "access control lists for: %s" -#: views.py:109 +#: views.py:100 #, fuzzy, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Default ACLs" -#: views.py:151 +#: views.py:138 #, fuzzy, python-format msgid "Access control lists for: %s" msgstr "access control lists for: %s" -#: views.py:162 +#: views.py:150 #, fuzzy msgid "Available permissions" msgstr "has permission" -#: views.py:163 +#: views.py:151 #, fuzzy msgid "Granted permissions" msgstr "has permission" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -247,8 +278,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/es/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/es/LC_MESSAGES/django.mo index 03fc79ac74..3c27e54ef2 100644 Binary files a/mayan/apps/acls/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/es/LC_MESSAGES/django.po b/mayan/apps/acls/locale/es/LC_MESSAGES/django.po index f860b997e1..3494fef350 100644 --- a/mayan/apps/acls/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/es/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:38+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-23 03:03+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -21,29 +21,29 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "LCAs" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Permisos" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "Rol" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "Borrar" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "Nueva LCA" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Acceso insuficiente." @@ -55,13 +55,13 @@ msgstr "Entrada de acceso" msgid "Access entries" msgstr "Entradas de acceso" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "Permisos \"%(permissions)s\" para el rol \"%(role)s\" para \"%(object)s\"" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Ninguno" @@ -77,36 +77,67 @@ msgstr "Editar LCAs" msgid "View ACLs" msgstr "Ver LCAs" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "No existe el permiso: %s" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "Nueva lista de control de acceso para: %s" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Borrar LCA: %s" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "Listas de control de acceso para: %s" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "Permisos disponibles" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "Permisos otorgados" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "Permisos del rol \"%(role)s\" para \"%(object)s\"" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "Los permisos inactivos se heredan de un objeto precedente." @@ -225,8 +256,5 @@ msgstr "Los permisos inactivos se heredan de un objeto precedente." #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/fa/LC_MESSAGES/django.mo index fee31706ca..7561a5b874 100644 Binary files a/mayan/apps/acls/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/fa/LC_MESSAGES/django.po b/mayan/apps/acls/locale/fa/LC_MESSAGES/django.po index febe4e197c..622baf96ed 100644 --- a/mayan/apps/acls/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/fa/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -18,29 +18,29 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "ACLs" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "مجوزها" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "نقش" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "حذف" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "دسترسی ناکافی" @@ -52,13 +52,13 @@ msgstr "ورودی دسترسی" msgid "Access entries" msgstr "ورودیهای دسترسی" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "هیچکدام." @@ -74,36 +74,67 @@ msgstr "ویرایش دسترسی ها" msgid "View ACLs" msgstr "دیدن دسترسی ها" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "لیست کنترل دسترسی ها برای : %s" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -222,8 +253,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/fr/LC_MESSAGES/django.mo index 14b6e009b1..d5e36acddf 100644 Binary files a/mayan/apps/acls/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/fr/LC_MESSAGES/django.po b/mayan/apps/acls/locale/fr/LC_MESSAGES/django.po index b01b356a0d..0035706cc7 100644 --- a/mayan/apps/acls/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/fr/LC_MESSAGES/django.po @@ -4,13 +4,14 @@ # # Translators: # Translators: +# Christophe CHAUVET , 2016 # Christophe CHAUVET , 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" @@ -19,29 +20,29 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "Droits" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Permissions" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "Rôle" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "Suppression" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "Nouveau droit" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "droit d'accès insuffisant." @@ -53,13 +54,13 @@ msgstr "Entrée d'accès" msgid "Access entries" msgstr "Entrées d'accès" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" -msgstr "" +msgstr "Permissions \"%(permissions)s\" du rôle \"%(role)s\" pour \"%(object)s\"" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Aucun" @@ -75,36 +76,67 @@ msgstr "Editer les droits" msgid "View ACLs" msgstr "voir les droits d'accès" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "Nouvelle liste de contrôle d'accès pour: %s" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Supprimer le droit: %s" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "Liste des contrôle d'accès pour: %s" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "Permissions disponibles" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "Permissions autorisées" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "Permission du rôle \"%(role)s\" pour \"%(object)s\"@" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "La désactivation de permission est hérité de l'objet parent" @@ -223,8 +255,5 @@ msgstr "La désactivation de permission est hérité de l'objet parent" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/hu/LC_MESSAGES/django.mo index d196323791..567529d2b8 100644 Binary files a/mayan/apps/acls/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/hu/LC_MESSAGES/django.po b/mayan/apps/acls/locale/hu/LC_MESSAGES/django.po index 77708a7b47..4940cbf39c 100644 --- a/mayan/apps/acls/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/hu/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -18,29 +18,29 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "ACL-ek" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "" @@ -52,13 +52,13 @@ msgstr "" msgid "Access entries" msgstr "" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Semmi" @@ -74,36 +74,67 @@ msgstr "" msgid "View ACLs" msgstr "" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -222,8 +253,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/id/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/id/LC_MESSAGES/django.mo index b346c5c893..a312c67839 100644 Binary files a/mayan/apps/acls/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/id/LC_MESSAGES/django.po b/mayan/apps/acls/locale/id/LC_MESSAGES/django.po index f1d098200f..b6fb4c1967 100644 --- a/mayan/apps/acls/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,29 +18,29 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "" @@ -52,13 +52,13 @@ msgstr "" msgid "Access entries" msgstr "" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "" @@ -74,36 +74,67 @@ msgstr "" msgid "View ACLs" msgstr "" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -222,8 +253,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/it/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/it/LC_MESSAGES/django.mo index 0d1cb734a6..6f3ed809f5 100644 Binary files a/mayan/apps/acls/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/it/LC_MESSAGES/django.po b/mayan/apps/acls/locale/it/LC_MESSAGES/django.po index 1a1ce39e76..a9ede2bd81 100644 --- a/mayan/apps/acls/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/it/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-30 21:18+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,29 +19,29 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "ACLs" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Permessi" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "Ruolo" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "Cancella" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "Nuova ACL" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Accesso insufficiente." @@ -53,13 +53,13 @@ msgstr "Voce di accesso" msgid "Access entries" msgstr "Voci di accesso" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "Permessi \"%(permissions)s\" del ruolo \"%(role)s\" per \"%(object)s\"" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Nessuna " @@ -75,36 +75,67 @@ msgstr "Modifica ACL" msgid "View ACLs" msgstr "Visualizza ACL" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "Nuova lista di controllo accesso per: %s" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Cancella ACL: %s" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "Lista dei permessi d'accesso per: %s" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "Autorizzazioni disponibili " -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "Autorizzazioni concesse " -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "Permessi del ruolo \"%(role)s\" per \"%(object)s\"" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "Il permesso disabilita è ereditato dall'oggetto padre" @@ -223,8 +254,5 @@ msgstr "Il permesso disabilita è ereditato dall'oggetto padre" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.mo index e95ea65909..ebcca81f19 100644 Binary files a/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.po index 93b9836dce..7981600645 100644 --- a/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 12:43+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,29 +20,29 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "Authorisatielijsten" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Permissies" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "Gebruikersrol" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "Verwijder" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "Nieuwe authorisatielijst" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Permissie is ontoereikend" @@ -54,13 +54,13 @@ msgstr "Authorisatie invoer" msgid "Access entries" msgstr "Authorisaties invoer" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "Permissies \"%(permissions)s\" voor gebruikersrol \"%(role)s\" voor \"%(object)s\"" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Geen" @@ -76,36 +76,67 @@ msgstr "Bewerk authorisatielijsten" msgid "View ACLs" msgstr "Bekijk authorisatielijsten" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "Nieuwe authorisatielijsten voor: %s" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Verwijder authorisatielijst: %s" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "Authorisatielijsten voor: %s" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "Beschikbare permissies" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "Toegekende permissies" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "Rol \"%(role)s\" permissies voor \"%(object)s\"" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "Uitgeschakelde permissies zijn geërfd van een parent object." @@ -224,8 +255,5 @@ msgstr "Uitgeschakelde permissies zijn geërfd van een parent object." #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/pl/LC_MESSAGES/django.mo index f958e6b8ed..fdd6729338 100644 Binary files a/mayan/apps/acls/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/pl/LC_MESSAGES/django.po b/mayan/apps/acls/locale/pl/LC_MESSAGES/django.po index 83be64cd16..eee21d6936 100644 --- a/mayan/apps/acls/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/pl/LC_MESSAGES/django.po @@ -9,39 +9,39 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "Listy ACL" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Uprawnienia" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "Rola" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "Usuń" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "Nowa lista ACL" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Niewystarczający dostęp." @@ -53,13 +53,13 @@ msgstr "Zgłoszenie dostępu" msgid "Access entries" msgstr "Zgłoszenia dostępu" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Brak" @@ -75,36 +75,67 @@ msgstr "Edytuj listy ACL" msgid "View ACLs" msgstr "Przeglądaj listy ACL" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "Nowe listy ACL dla: %s" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Usuń listę ACL: %s" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "Listy ACL dla: %s" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "Dostępne uprawnienia" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "Przyznane uprawnienia" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "Uprawnienia roli \"%(role)s\" dla obiektu \"%(object)s\"" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "Domyślne uprawnienia są dziedziczone z obiektu nadrzędnego." @@ -223,8 +254,5 @@ msgstr "Domyślne uprawnienia są dziedziczone z obiektu nadrzędnego." #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/pt/LC_MESSAGES/django.mo index 9caa6ac7bb..019c27d8f6 100644 Binary files a/mayan/apps/acls/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/pt/LC_MESSAGES/django.po b/mayan/apps/acls/locale/pt/LC_MESSAGES/django.po index 97b4a0cef4..c428c5bf38 100644 --- a/mayan/apps/acls/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/pt/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -18,29 +18,29 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "ACL's" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Permissões" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "Eliminar" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Acesso insuficiente." @@ -52,13 +52,13 @@ msgstr "" msgid "Access entries" msgstr "" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Nenhum" @@ -74,36 +74,67 @@ msgstr "Editar ACL's" msgid "View ACLs" msgstr "Ver ACL's" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -222,8 +253,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.mo index 48edbdd099..ce16d5ed23 100644 Binary files a/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.po index 718565702a..3cccee3b24 100644 --- a/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-11-17 22:31+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,29 +19,29 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "ACLs" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Permissões" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "Regras" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "Excluir" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "Nova ACL" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Acesso insuficiente." @@ -53,13 +53,13 @@ msgstr "Acesso entrada" msgid "Access entries" msgstr "Entradas de acesso" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "Permissões \"%(permissions)s\" do papel \"%(role)s\" para \"%(object)s\"" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Nenhum" @@ -75,36 +75,67 @@ msgstr "Editar ACLs" msgid "View ACLs" msgstr "Visualizar ACLs" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "Nova lista de controle de acesso para: %s" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Apagar ACL: %s" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "listas de controle de acesso para: %s" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "Permissões disponíveis" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "Permissões outorgadas" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "Permissões do papel \"%(role)s\" para \"%(object)s\"" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "As permissões inativas foram herdadas de um objeto precedente." @@ -223,8 +254,5 @@ msgstr "As permissões inativas foram herdadas de um objeto precedente." #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.mo index 022af94d80..b724158186 100644 Binary files a/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.po index 74e5cd928e..baeccea72f 100644 --- a/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -18,29 +18,29 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "ACL-uri" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Permisiuni" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "Șterge" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Accesul insuficient." @@ -52,13 +52,13 @@ msgstr "" msgid "Access entries" msgstr "" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Nici unul" @@ -74,36 +74,67 @@ msgstr "Editați ACL-uri" msgid "View ACLs" msgstr "Vezi ACL-uri" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -222,8 +253,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/ru/LC_MESSAGES/django.mo index 9b8f899058..91e9844984 100644 Binary files a/mayan/apps/acls/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/ru/LC_MESSAGES/django.po b/mayan/apps/acls/locale/ru/LC_MESSAGES/django.po index b1b5a0d552..384d7ac644 100644 --- a/mayan/apps/acls/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/ru/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" @@ -19,29 +19,29 @@ msgstr "" "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" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "СУДы" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Разрешения" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "Роль" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "Удалить" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "Создать СУД" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Неполный доступ." @@ -53,13 +53,13 @@ msgstr "Элемент доступа" msgid "Access entries" msgstr "Элементы доступа" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Пусто" @@ -75,36 +75,67 @@ msgstr "Редактировать СУДы" msgid "View ACLs" msgstr "Просмотр СУДов" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "Новый СУД для: %s" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Удалить СУД: %s" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "СУДы для: %s" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "Доступные разрешения" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "Предоставленные разрешения" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "Права роли \"%(role)s\" для \"%(object)s\"" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "Отключенные права наследуются от родительского объекта." @@ -223,8 +254,5 @@ msgstr "Отключенные права наследуются от родит #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.mo index 852ed45a5c..16c5c8e6c3 100644 Binary files a/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.po index 336dac372c..a27f6f2cbc 100644 --- a/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-11-17 08:58+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,29 +18,29 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "Pravice" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "Pravice" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "Nezadosten dostop" @@ -52,13 +52,13 @@ msgstr "Vstopna točka" msgid "Access entries" msgstr "Vstopne točke" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "Brez" @@ -74,36 +74,67 @@ msgstr "Uredi dostopne pravice" msgid "View ACLs" msgstr "Preglej dostopne pravice" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "Dostopne pravice za %s" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -222,8 +253,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.mo index aed8c992d9..35c6288d2b 100644 Binary files a/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.po index 5ec9a916c8..6886625ae3 100644 --- a/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -18,29 +18,29 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "ACLs" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "" @@ -52,13 +52,13 @@ msgstr "" msgid "Access entries" msgstr "" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "None" @@ -74,36 +74,67 @@ msgstr "" msgid "View ACLs" msgstr "" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -222,8 +253,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.mo index 771d29ca9b..5db1547379 100644 Binary files a/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.po index 4e0ee1a149..44a7369947 100644 --- a/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -18,29 +18,29 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:14 links.py:31 +#: apps.py:15 links.py:35 msgid "ACLs" msgstr "访问控制列表" -#: apps.py:22 links.py:40 models.py:36 +#: apps.py:25 links.py:44 models.py:36 msgid "Permissions" msgstr "权限" -#: apps.py:26 models.py:38 +#: apps.py:29 models.py:38 #| msgid "Roles" msgid "Role" msgstr "" -#: links.py:27 +#: links.py:31 msgid "Delete" msgstr "" -#: links.py:35 +#: links.py:39 #| msgid "View ACLs" msgid "New ACL" msgstr "" -#: managers.py:85 +#: managers.py:109 msgid "Insufficient access." msgstr "权限不足" @@ -52,13 +52,13 @@ msgstr "访问入口" msgid "Access entries" msgstr "多个访问入口" -#: models.py:48 +#: models.py:49 #, python-format #| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s." msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" msgstr "" -#: models.py:64 +#: models.py:66 msgid "None" msgstr "无" @@ -74,36 +74,67 @@ msgstr "编辑访问控制列表" msgid "View ACLs" msgstr "查看访问控制列表" -#: views.py:78 +#: serializers.py:24 serializers.py:132 +msgid "" +"API URL pointing to the list of permissions for this access control list." +msgstr "" + +#: serializers.py:57 +msgid "" +"API URL pointing to a permission in relation to the access control list to " +"which it is attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:87 +msgid "Primary key of the new permission to grant to the access control list." +msgstr "" + +#: serializers.py:111 serializers.py:187 +#, python-format +#| msgid "permission" +msgid "No such permission: %s" +msgstr "" + +#: serializers.py:126 +msgid "" +"Comma separated list of permission primary keys to grant to this access " +"control list." +msgstr "" + +#: serializers.py:138 +msgid "Primary keys of the role to which this access control list binds to." +msgstr "" + +#: views.py:73 #, python-format msgid "New access control lists for: %s" msgstr "" -#: views.py:109 +#: views.py:100 #, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" -#: views.py:151 +#: views.py:138 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:162 +#: views.py:150 msgid "Available permissions" msgstr "" -#: views.py:163 +#: views.py:151 msgid "Granted permissions" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:242 +#: views.py:226 msgid "Disabled permissions are inherited from a parent object." msgstr "" @@ -222,8 +253,5 @@ msgstr "" #~ msgid "List of classes" #~ msgstr "List of classes" -#~ msgid "permission" -#~ msgstr "permission" - #~ msgid "creator" #~ msgstr "creator" diff --git a/mayan/apps/acls/managers.py b/mayan/apps/acls/managers.py index eb5bbb207a..e1facbb712 100644 --- a/mayan/apps/acls/managers.py +++ b/mayan/apps/acls/managers.py @@ -49,6 +49,10 @@ class AccessControlListManager(models.Manager): def check_access(self, permissions, user, obj, related=None): if user.is_superuser or user.is_staff: + logger.debug( + 'Permissions "%s" on "%s" granted to user "%s" as superuser or staff', + permissions, obj, user + ) return True try: @@ -89,15 +93,32 @@ class AccessControlListManager(models.Manager): for group in user.groups.all(): for role in group.roles.all(): if set(stored_permissions).intersection(set(self.get_inherited_permissions(role=role, obj=obj))): + logger.debug( + 'Permissions "%s" on "%s" granted to user "%s" through role "%s" via inherited ACL', + permissions, obj, user, role + ) return True user_roles.append(role) if not self.filter(content_type=ContentType.objects.get_for_model(obj), object_id=obj.pk, permissions__in=stored_permissions, role__in=user_roles).exists(): + logger.debug( + 'Permissions "%s" on "%s" denied for user "%s"', + permissions, obj, user + ) raise PermissionDenied(ugettext('Insufficient access.')) + logger.debug( + 'Permissions "%s" on "%s" granted to user "%s" through roles "%s" by direct ACL', + permissions, obj, user, user_roles + ) + def filter_by_access(self, permission, user, queryset): if user.is_superuser or user.is_staff: + logger.debug( + 'Unfiltered queryset returned to user "%s" as superuser ' + 'or staff', user + ) return queryset try: @@ -145,6 +166,10 @@ class AccessControlListManager(models.Manager): content_type=content_type, role__in=user_roles, permissions=permission.stored_permission ).values_list('object_id', flat=True)) + logger.debug( + 'Filtered queryset returned to user "%s" based on roles "%s"', + user, user_roles + ) return queryset.filter(parent_acl_query | acl_query) else: diff --git a/mayan/apps/acls/models.py b/mayan/apps/acls/models.py index 03db1cbebd..3e7cc833ff 100644 --- a/mayan/apps/acls/models.py +++ b/mayan/apps/acls/models.py @@ -18,9 +18,17 @@ logger = logging.getLogger(__name__) @python_2_unicode_compatible class AccessControlList(models.Model): """ - Model that hold the permission, object, actor relationship + ACL means Access Control List it is a more fine-grained method of + granting access to objects. In the case of ACLs, they grant access using + 3 elements: actor, permission, object. In this case the actor is the role, + the permission is the Mayan permission and the object can be anything: + a document, a folder, an index, etc. This means = "Grant X permissions + to role Y for object Z". This model holds the permission, object, actor + relationship for one access control list. + Fields: + * Role - Custom role that is being granted a permission. Roles are created + in the Setup menu. """ - content_type = models.ForeignKey( ContentType, related_name='object_content_type' @@ -45,7 +53,9 @@ class AccessControlList(models.Model): verbose_name_plural = _('Access entries') def __str__(self): - return _('Permissions "%(permissions)s" to role "%(role)s" for "%(object)s"') % { + return _( + 'Permissions "%(permissions)s" to role "%(role)s" for "%(object)s"' + ) % { 'permissions': self.get_permission_titles(), 'object': self.content_object, 'role': self.role diff --git a/mayan/apps/acls/serializers.py b/mayan/apps/acls/serializers.py new file mode 100644 index 0000000000..d312f8d827 --- /dev/null +++ b/mayan/apps/acls/serializers.py @@ -0,0 +1,204 @@ +from __future__ import absolute_import, unicode_literals + +from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ValidationError as DjangoValidationError +from django.utils.encoding import force_text +from django.utils.translation import ugettext_lazy as _ + +from rest_framework import serializers +from rest_framework.exceptions import ValidationError +from rest_framework.reverse import reverse + +from common.serializers import ContentTypeSerializer +from permissions import Permission +from permissions.models import Role, StoredPermission +from permissions.serializers import PermissionSerializer, RoleSerializer + +from .models import AccessControlList + + +class AccessControlListSerializer(serializers.ModelSerializer): + content_type = ContentTypeSerializer(read_only=True) + permissions_url = serializers.SerializerMethodField( + help_text=_( + 'API URL pointing to the list of permissions for this access ' + 'control list.' + ) + ) + role = RoleSerializer(read_only=True) + url = serializers.SerializerMethodField() + + class Meta: + fields = ( + 'content_type', 'id', 'object_id', 'permissions_url', 'role', 'url' + ) + model = AccessControlList + + def get_permissions_url(self, instance): + return reverse( + 'rest_api:accesscontrollist-permission-list', args=( + instance.content_type.app_label, instance.content_type.model, + instance.object_id, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + + def get_url(self, instance): + return reverse( + 'rest_api:accesscontrollist-detail', args=( + instance.content_type.app_label, instance.content_type.model, + instance.object_id, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + + +class AccessControlListPermissionSerializer(PermissionSerializer): + acl_permission_url = serializers.SerializerMethodField( + help_text=_( + 'API URL pointing to a permission in relation to the ' + 'access control list to which it is attached. This URL is ' + 'different than the canonical workflow URL.' + ) + ) + acl_url = serializers.SerializerMethodField() + + def get_acl_permission_url(self, instance): + return reverse( + 'rest_api:accesscontrollist-permission-detail', args=( + self.context['acl'].content_type.app_label, + self.context['acl'].content_type.model, + self.context['acl'].object_id, self.context['acl'].pk, + instance.stored_permission.pk + ), request=self.context['request'], format=self.context['format'] + ) + + def get_acl_url(self, instance): + return reverse( + 'rest_api:accesscontrollist-detail', args=( + self.context['acl'].content_type.app_label, + self.context['acl'].content_type.model, + self.context['acl'].object_id, self.context['acl'].pk + ), request=self.context['request'], format=self.context['format'] + ) + + +class WritableAccessControlListPermissionSerializer(AccessControlListPermissionSerializer): + permission_pk = serializers.CharField( + help_text=_( + 'Primary key of the new permission to grant to the access control ' + 'list.' + ), write_only=True + ) + + class Meta: + fields = ('namespace',) + read_only_fields = ('namespace',) + + def create(self, validated_data): + for permission in validated_data['permissions']: + self.context['acl'].permissions.add(permission) + + return validated_data['permissions'][0] + + def validate(self, attrs): + permissions_pk_list = attrs.pop('permission_pk', None) + permissions_result = [] + + if permissions_pk_list: + for pk in permissions_pk_list.split(','): + try: + permission = Permission.get(pk=pk) + except KeyError: + raise ValidationError(_('No such permission: %s') % pk) + else: + # Accumulate valid stored permission pks + permissions_result.append(permission.pk) + + attrs['permissions'] = StoredPermission.objects.filter( + pk__in=permissions_result + ) + return attrs + + +class WritableAccessControlListSerializer(serializers.ModelSerializer): + content_type = ContentTypeSerializer(read_only=True) + permissions_pk_list = serializers.CharField( + help_text=_( + 'Comma separated list of permission primary keys to grant to this ' + 'access control list.' + ), required=False + ) + permissions_url = serializers.SerializerMethodField( + help_text=_( + 'API URL pointing to the list of permissions for this access ' + 'control list.' + ), read_only=True + ) + role_pk = serializers.IntegerField( + help_text=_( + 'Primary keys of the role to which this access control list ' + 'binds to.' + ), write_only=True + ) + url = serializers.SerializerMethodField() + + class Meta: + fields = ( + 'content_type', 'id', 'object_id', 'permissions_pk_list', + 'permissions_url', 'role_pk', 'url' + ) + model = AccessControlList + read_only_fields = ('content_type', 'object_id') + + def get_permissions_url(self, instance): + return reverse( + 'rest_api:accesscontrollist-permission-list', args=( + instance.content_type.app_label, instance.content_type.model, + instance.object_id, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + + def get_url(self, instance): + return reverse( + 'rest_api:accesscontrollist-detail', args=( + instance.content_type.app_label, instance.content_type.model, + instance.object_id, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + + def validate(self, attrs): + attrs['content_type'] = ContentType.objects.get_for_model( + self.context['content_object'] + ) + attrs['object_id'] = self.context['content_object'].pk + + try: + attrs['role'] = Role.objects.get(pk=attrs.pop('role_pk')) + except Role.DoesNotExist as exception: + raise ValidationError(force_text(exception)) + + permissions_pk_list = attrs.pop('permissions_pk_list', None) + permissions_result = [] + + if permissions_pk_list: + for pk in permissions_pk_list.split(','): + try: + permission = Permission.get(pk=pk) + except KeyError: + raise ValidationError(_('No such permission: %s') % pk) + else: + # Accumulate valid stored permission pks + permissions_result.append(permission.pk) + + instance = AccessControlList(**attrs) + + try: + instance.full_clean() + except DjangoValidationError as exception: + raise ValidationError(exception) + + # Add a queryset of valid stored permissions so that they get added + # after the ACL gets created. + attrs['permissions'] = StoredPermission.objects.filter( + pk__in=permissions_result + ) + return attrs diff --git a/mayan/apps/acls/tests/test_api.py b/mayan/apps/acls/tests/test_api.py new file mode 100644 index 0000000000..244fbc54d7 --- /dev/null +++ b/mayan/apps/acls/tests/test_api.py @@ -0,0 +1,254 @@ +from __future__ import absolute_import, unicode_literals + +from django.contrib.auth import get_user_model +from django.contrib.contenttypes.models import ContentType +from django.core.urlresolvers import reverse +from django.test import override_settings + +from rest_framework.test import APITestCase + +from documents.models import DocumentType +from documents.permissions import permission_document_view +from documents.tests.literals import ( + TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +) +from permissions.classes import Permission +from permissions.models import Role +from permissions.tests.literals import TEST_ROLE_LABEL +from user_management.tests.literals import ( + TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME +) + +from ..models import AccessControlList +from ..permissions import permission_acl_view + + +@override_settings(OCR_AUTO_OCR=False) +class ACLAPITestCase(APITestCase): + def setUp(self): + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object + ) + + self.role = Role.objects.create(label=TEST_ROLE_LABEL) + + self.document_content_type = ContentType.objects.get_for_model( + self.document + ) + Permission.invalidate_cache() + + def tearDown(self): + if hasattr(self, 'document_type'): + self.document_type.delete() + + def _create_acl(self): + self.acl = AccessControlList.objects.create( + content_object=self.document, + role=self.role + ) + + self.acl.permissions.add(permission_document_view.stored_permission) + + def test_object_acl_list_view(self): + self._create_acl() + + response = self.client.get( + reverse( + 'rest_api:accesscontrollist-list', + args=( + self.document_content_type.app_label, + self.document_content_type.model, + self.document.pk + ) + ) + ) + + self.assertEqual( + response.data['results'][0]['content_type']['app_label'], + self.document_content_type.app_label + ) + self.assertEqual( + response.data['results'][0]['role']['label'], TEST_ROLE_LABEL + ) + + def test_object_acl_delete_view(self): + self._create_acl() + + response = self.client.delete( + reverse( + 'rest_api:accesscontrollist-detail', + args=( + self.document_content_type.app_label, + self.document_content_type.model, + self.document.pk, self.acl.pk + ) + ) + ) + + self.assertEqual(response.status_code, 204) + self.assertEqual(AccessControlList.objects.count(), 0) + + def test_object_acl_detail_view(self): + self._create_acl() + + response = self.client.get( + reverse( + 'rest_api:accesscontrollist-detail', + args=( + self.document_content_type.app_label, + self.document_content_type.model, + self.document.pk, self.acl.pk + ) + ) + ) + self.assertEqual( + response.data['content_type']['app_label'], + self.document_content_type.app_label + ) + self.assertEqual( + response.data['role']['label'], TEST_ROLE_LABEL + ) + + def test_object_acl_permission_delete_view(self): + self._create_acl() + permission = self.acl.permissions.first() + + response = self.client.delete( + reverse( + 'rest_api:accesscontrollist-permission-detail', + args=( + self.document_content_type.app_label, + self.document_content_type.model, + self.document.pk, self.acl.pk, + permission.pk + ) + ) + ) + self.assertEqual(response.status_code, 204) + self.assertEqual(self.acl.permissions.count(), 0) + + def test_object_acl_permission_detail_view(self): + self._create_acl() + permission = self.acl.permissions.first() + + response = self.client.get( + reverse( + 'rest_api:accesscontrollist-permission-detail', + args=( + self.document_content_type.app_label, + self.document_content_type.model, + self.document.pk, self.acl.pk, + permission.pk + ) + ) + ) + + self.assertEqual( + response.data['pk'], permission_document_view.pk + ) + + def test_object_acl_permission_list_view(self): + self._create_acl() + + response = self.client.get( + reverse( + 'rest_api:accesscontrollist-permission-list', + args=( + self.document_content_type.app_label, + self.document_content_type.model, + self.document.pk, self.acl.pk + ) + ) + ) + + self.assertEqual( + response.data['results'][0]['pk'], + permission_document_view.pk + ) + + def test_object_acl_permission_list_post_view(self): + self._create_acl() + + response = self.client.post( + reverse( + 'rest_api:accesscontrollist-permission-list', + args=( + self.document_content_type.app_label, + self.document_content_type.model, + self.document.pk, self.acl.pk + ) + ), data={'permission_pk': permission_acl_view.pk} + ) + + self.assertEqual(response.status_code, 201) + self.assertQuerysetEqual( + ordered=False, qs=self.acl.permissions.all(), values=( + repr(permission_document_view.stored_permission), + repr(permission_acl_view.stored_permission) + ) + ) + + def test_object_acl_post_no_permissions_added_view(self): + response = self.client.post( + reverse( + 'rest_api:accesscontrollist-list', + args=( + self.document_content_type.app_label, + self.document_content_type.model, + self.document.pk + ) + ), data={'role_pk': self.role.pk} + ) + + self.assertEqual(response.status_code, 201) + self.assertEqual( + self.document.acls.first().role, self.role + ) + self.assertEqual( + self.document.acls.first().content_object, self.document + ) + self.assertEqual( + self.document.acls.first().permissions.count(), 0 + ) + + def test_object_acl_post_with_permissions_added_view(self): + response = self.client.post( + reverse( + 'rest_api:accesscontrollist-list', + args=( + self.document_content_type.app_label, + self.document_content_type.model, + self.document.pk + ) + ), data={ + 'role_pk': self.role.pk, + 'permissions_pk_list': permission_acl_view.pk + + } + ) + + self.assertEqual(response.status_code, 201) + self.assertEqual( + self.document.acls.first().content_object, self.document + ) + self.assertEqual( + self.document.acls.first().role, self.role + ) + self.assertEqual( + self.document.acls.first().permissions.first(), + permission_acl_view.stored_permission + ) diff --git a/mayan/apps/acls/urls.py b/mayan/apps/acls/urls.py index 1816a04169..ea0adb9d8b 100644 --- a/mayan/apps/acls/urls.py +++ b/mayan/apps/acls/urls.py @@ -2,6 +2,10 @@ from __future__ import unicode_literals from django.conf.urls import url +from .api_views import ( + APIObjectACLListView, APIObjectACLPermissionListView, + APIObjectACLPermissionView, APIObjectACLView +) from .views import ( ACLCreateView, ACLDeleteView, ACLListView, ACLPermissionsView ) @@ -21,3 +25,22 @@ urlpatterns = [ name='acl_permissions' ), ] + +api_urls = [ + url( + r'^objects/(?P[-\w]+)/(?P[-\w]+)/(?P\d+)/acls/$', + APIObjectACLListView.as_view(), name='accesscontrollist-list' + ), + url( + r'^objects/(?P[-\w]+)/(?P[-\w]+)/(?P\d+)/acls/(?P\d+)/$', + APIObjectACLView.as_view(), name='accesscontrollist-detail' + ), + url( + r'^objects/(?P[-\w]+)/(?P[-\w]+)/(?P\d+)/acls/(?P\d+)/permissions/$', + APIObjectACLPermissionListView.as_view(), name='accesscontrollist-permission-list' + ), + url( + r'^objects/(?P[-\w]+)/(?P[-\w]+)/(?P\d+)/acls/(?P\d+)/permissions/(?P\d+)/$', + APIObjectACLPermissionView.as_view(), name='accesscontrollist-permission-detail' + ), +] diff --git a/mayan/apps/acls/views.py b/mayan/apps/acls/views.py index cacbca3e17..4e6747b432 100644 --- a/mayan/apps/acls/views.py +++ b/mayan/apps/acls/views.py @@ -140,7 +140,8 @@ class ACLListView(SingleObjectListView): def get_queryset(self): return AccessControlList.objects.filter( - content_type=self.object_content_type, object_id=self.content_object.pk + content_type=self.object_content_type, + object_id=self.content_object.pk ) diff --git a/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.mo index 624326d04b..5525e852cc 100644 Binary files a/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.po index 97f92e9588..9febf4c31b 100644 --- a/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -17,11 +17,11 @@ msgstr "" "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" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "صلاحيات غير كافية" @@ -29,7 +29,7 @@ msgstr "صلاحيات غير كافية" msgid "You don't have enough permissions for this operation." msgstr "ليس لديك صلاحيات كافية لهذه العملية." -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "لم يتم العثور على الصفحة" @@ -37,7 +37,7 @@ msgstr "لم يتم العثور على الصفحة" msgid "Sorry, but the requested page could not be found." msgstr "عفواً، لا يمكن العثور على الصفحة المطلوبة." -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -53,7 +53,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "" @@ -66,47 +66,47 @@ msgstr "الاصدار" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "مجهول" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "تفاصيل المستخدم" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "الإجراءات" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -124,6 +124,10 @@ msgstr "" msgid "Create" msgstr "انشاء" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -138,39 +142,39 @@ msgstr "تأكيد حذف" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "نعم" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "لا" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "مطلوب" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "حفظ" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "ارسال" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "إلغاء" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "" @@ -187,34 +191,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "معرف" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "" -#: templates/appearance/home.html:57 -msgid "Space separated terms" +#: templates/appearance/home.html:46 +msgid "Search pages" msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "البحث" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Login" @@ -254,7 +262,7 @@ msgid "" "message." msgstr "Be sure to change the password to increase security and to disable this message." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "" diff --git a/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.mo index 34c948f58e..a122f298e6 100644 Binary files a/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.po index 63259b1e47..94cc7e5bb4 100644 --- a/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -17,11 +17,11 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "" @@ -29,7 +29,7 @@ msgstr "" msgid "You don't have enough permissions for this operation." msgstr "" -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Страницата не е намерена" @@ -37,7 +37,7 @@ msgstr "Страницата не е намерена" msgid "Sorry, but the requested page could not be found." msgstr "" -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -53,7 +53,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "" @@ -66,47 +66,47 @@ msgstr "Версия" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Анонимен" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "Данни за потребител" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Действия" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -124,6 +124,10 @@ msgstr "" msgid "Create" msgstr "Създаване" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -138,39 +142,39 @@ msgstr "Потвърдете изтриване" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "Да" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "Не" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "Запазване" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "Подаване" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "Отказ" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "" @@ -187,34 +191,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "Идентификатор" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "" -#: templates/appearance/home.html:57 -msgid "Space separated terms" +#: templates/appearance/home.html:46 +msgid "Search pages" msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Търсене" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Влез" @@ -254,7 +262,7 @@ msgid "" "message." msgstr "Моля променете паролата, за да повишите нивото на сигурност и да деактивирате това съобщение." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "" diff --git a/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.mo index 8c10fab49a..46ade5dc01 100644 Binary files a/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.po index 7121197157..6850e07098 100644 --- a/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -17,11 +17,11 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "Nedovoljno dozvola" @@ -29,7 +29,7 @@ msgstr "Nedovoljno dozvola" msgid "You don't have enough permissions for this operation." msgstr "Nemate odgovarajuca prava za ovu operaciju." -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Stranica nije pronađena" @@ -37,7 +37,7 @@ msgstr "Stranica nije pronađena" msgid "Sorry, but the requested page could not be found." msgstr "Žao nam je, ali tražena stranica ne može biti pronađena." -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -53,7 +53,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "" @@ -66,47 +66,47 @@ msgstr "Verzija" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Anonimni" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "Detalji o korisniku" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Akcije" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -124,6 +124,10 @@ msgstr "" msgid "Create" msgstr "Kreirati" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -138,39 +142,39 @@ msgstr "Potvrditi brisanje" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "Da" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "Ne" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "potrebno" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "Sačuvati" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "Podnijeti" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "Otkazati" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "" @@ -187,34 +191,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "Identifikator" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "" -#: templates/appearance/home.html:57 -msgid "Space separated terms" +#: templates/appearance/home.html:46 +msgid "Search pages" msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Pretraga" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Prijava" @@ -254,7 +262,7 @@ msgid "" "message." msgstr "Ne zaboravite promijeniti pasvord da pojačate sigurnost i onemogućite dalje prikazivanje ove poruke." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "" diff --git a/mayan/apps/appearance/locale/da/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/da/LC_MESSAGES/django.mo index 177a1872ad..5c23916567 100644 Binary files a/mayan/apps/appearance/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/da/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/da/LC_MESSAGES/django.po index 96cb58ceb2..cf75f2c23f 100644 --- a/mayan/apps/appearance/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/da/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -17,11 +17,11 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "" @@ -29,7 +29,7 @@ msgstr "" msgid "You don't have enough permissions for this operation." msgstr "" -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "" @@ -37,7 +37,7 @@ msgstr "" msgid "Sorry, but the requested page could not be found." msgstr "" -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -53,7 +53,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "" @@ -66,47 +66,47 @@ msgstr "Version" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Anonym" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "Bruger detaljer" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Handlinger" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -124,6 +124,10 @@ msgstr "" msgid "Create" msgstr "" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -138,39 +142,39 @@ msgstr "" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "" @@ -187,34 +191,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "" -#: templates/appearance/home.html:57 -msgid "Space separated terms" +#: templates/appearance/home.html:46 +msgid "Search pages" msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Log ind" @@ -254,7 +262,7 @@ msgid "" "message." msgstr "" -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "" diff --git a/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.mo index 8e2fa89b13..515e171a4f 100644 Binary files a/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.po index 3af714c734..23377043cb 100644 --- a/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.po @@ -4,13 +4,14 @@ # # Translators: # Berny , 2015 +# Jesaja Everling , 2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" -"Last-Translator: Mathias Behrle \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-24 22:57+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,11 +19,11 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "Erscheinungsbild" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "Unzureichende Berechtigungen" @@ -30,7 +31,7 @@ msgstr "Unzureichende Berechtigungen" msgid "You don't have enough permissions for this operation." msgstr "Sie haben unzureichende Berechtigungen für diesen Vorgang." -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Seite nicht gefunden" @@ -38,7 +39,7 @@ msgstr "Seite nicht gefunden" msgid "Sorry, but the requested page could not be found." msgstr "Die angeforderte Seite konnte leider nicht gefunden werden" -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "Serverfehler" @@ -54,7 +55,7 @@ msgid "" "identifier:" msgstr "Wenn Sie Hilfe brauchen, können Sie den Fehler über folgende Kennung referenzieren: " -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "Über" @@ -67,47 +68,47 @@ msgstr "Version" msgid "Build number: %(build_number)s" msgstr "Build Nummer: %(build_number)s" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "Veröffentlicht unter der Apache 2.0 Lizenz" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "Copyright © 2011-2015 Roberto Rosario." -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "Navigation ein-/ausschalten" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "Profil" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Anonymer Benutzer" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "Benutzerdetails" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "Erfolg" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "Information" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "Warnung" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "Fehler" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Aktionen" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "Ausklappmenü ein-/ausschalten" @@ -125,6 +126,10 @@ msgstr "%(object)s bearbeiten" msgid "Create" msgstr "Erstellen" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -139,39 +144,39 @@ msgstr "Löschen bestätigen" msgid "Delete: %(object)s?" msgstr "%(object)s löschen?" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "Ja" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "Nein" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "erforderlich" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "Speichern" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "Absenden" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "Abbrechen" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "Kein Ergebnis" @@ -188,34 +193,38 @@ msgstr "Gesamt (%(start)s - %(end)s von %(total)s) (Seite %(page_number)s von %( msgid "Total: %(total)s" msgstr "Gesamt: %(total)s" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "Bezeichner" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" -msgstr "Start" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" +msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "Erste Schritte" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "Bevor Mayan EDMS voll genutzt werden kann, muss folgendes passieren:" -#: templates/appearance/home.html:57 -msgid "Space separated terms" -msgstr "Begriffe durch Leerzeichen getrennt" +#: templates/appearance/home.html:46 +msgid "Search pages" +msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Suche" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "Erweitert" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Login" @@ -255,7 +264,7 @@ msgid "" "message." msgstr "Bitte ändern Sie das Passwort, um die Sicherheit zu erhöhen und diese Nachricht zu deaktivieren." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "Anmelden" diff --git a/mayan/apps/appearance/locale/en/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/en/LC_MESSAGES/django.mo index 21eaaf8a16..fa72cf2a19 100644 Binary files a/mayan/apps/appearance/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/en/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/en/LC_MESSAGES/django.po index 48ee2e6dd8..3494af8d5c 100644 --- a/mayan/apps/appearance/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "" @@ -29,7 +29,7 @@ msgstr "" msgid "You don't have enough permissions for this operation." msgstr "" -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "" @@ -37,7 +37,7 @@ msgstr "" msgid "Sorry, but the requested page could not be found." msgstr "" -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -53,7 +53,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "" @@ -66,47 +66,47 @@ msgstr "" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -124,6 +124,10 @@ msgstr "" msgid "Create" msgstr "" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -138,39 +142,39 @@ msgstr "" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "" @@ -187,34 +191,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "" -#: templates/appearance/home.html:57 -msgid "Space separated terms" +#: templates/appearance/home.html:46 +msgid "Search pages" msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "" @@ -254,7 +262,7 @@ msgid "" "message." msgstr "" -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "" diff --git a/mayan/apps/appearance/locale/es/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/es/LC_MESSAGES/django.mo index 4a86c3f7e3..d2efde9c7c 100644 Binary files a/mayan/apps/appearance/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/es/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/es/LC_MESSAGES/django.po index c98b7266bd..ff5c72c2aa 100644 --- a/mayan/apps/appearance/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/es/LC_MESSAGES/django.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Roberto Rosario, 2015-2016 +# Roberto Rosario, 2015-2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:41+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-23 03:05+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -18,11 +18,11 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "Apariencia" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "Permisos insuficientes" @@ -30,7 +30,7 @@ msgstr "Permisos insuficientes" msgid "You don't have enough permissions for this operation." msgstr "No tienes suficientes permisos para esta operación" -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Página no encontrada" @@ -38,7 +38,7 @@ msgstr "Página no encontrada" msgid "Sorry, but the requested page could not be found." msgstr "Lo sentimos, la página solicitada no pudo ser encontrada" -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "Error de servidor" @@ -54,7 +54,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "Sobre" @@ -67,47 +67,47 @@ msgstr "Versión" msgid "Build number: %(build_number)s" msgstr "Número de compilación: %(build_number)s" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "Liberado bajo la licencia Apache 2.0 License" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "Todos los derechos reservados © 2011-2015 Roberto Rosario." -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "Activar/Desactivar navegación" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "Perfil" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Anónimo" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "Detalles del usuario" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "Exitoso" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "Información" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "Advertencia" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "Error" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Acciones" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "Alternar desplegable" @@ -125,6 +125,10 @@ msgstr "Editar: %(object)s" msgid "Create" msgstr "Crear" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "Ver detalles" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -139,39 +143,39 @@ msgstr "Confirmar eliminación" msgid "Delete: %(object)s?" msgstr "¿Borrar: %(object)s?" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "Sí" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "No" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "requerido" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "Guardar" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "Enviar" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "Cancelar" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "Ningún resultado" @@ -188,34 +192,38 @@ msgstr "Total (%(start)s - %(end)s de %(total)s) (Página %(page_number)s de %(t msgid "Total: %(total)s" msgstr "Total: %(total)s" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "Identificador" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" -msgstr "inicio" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" +msgstr "Tablero" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "Iniciando" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "Antes de comenzar a utilizar Mayan EDMS usted necesita lo siguiente:" -#: templates/appearance/home.html:57 -msgid "Space separated terms" -msgstr "Términos separados por espacios" +#: templates/appearance/home.html:46 +msgid "Search pages" +msgstr "Buscar páginas " -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Búsqueda" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "Avanzada" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "Buscar documentos" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Iniciar sesión" @@ -255,7 +263,7 @@ msgid "" "message." msgstr "Asegúrese de cambiar su contraseña para aumentar la seguridad y para desactivar este mensaje" -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "Entrar" diff --git a/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.mo index db920b01d7..da73f67d7c 100644 Binary files a/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.po index 2d6241282f..8d4a10189f 100644 --- a/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -17,11 +17,11 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "مجوز ناکافی" @@ -29,7 +29,7 @@ msgstr "مجوز ناکافی" msgid "You don't have enough permissions for this operation." msgstr "مجوزهای لازم برای انجام این عملیات را ندارید." -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "صفحه پیدا نشد." @@ -37,7 +37,7 @@ msgstr "صفحه پیدا نشد." msgid "Sorry, but the requested page could not be found." msgstr "متاسفانه صفحه درخواستی پیدا نشد." -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -53,7 +53,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "درباره" @@ -66,47 +66,47 @@ msgstr "نسخه" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "تحت لیسانس Apache 2.0" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "کپی رایت و کپی" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "ناشناس" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "جزئیات کاربر" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "عملیات" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -124,6 +124,10 @@ msgstr "ویرایش : %(object)s" msgid "Create" msgstr "ایجاد" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -138,39 +142,39 @@ msgstr "تائید حذف" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "بلی" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "خیر" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "الزامی" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "ذخیره" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "ارسال" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "لغو" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "بی جواب و یا بی جواب" @@ -187,34 +191,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "مشخصه Identifier" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" -msgstr "خانه" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" +msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "" -#: templates/appearance/home.html:57 -msgid "Space separated terms" -msgstr "عبارات جداکننده فضا" +#: templates/appearance/home.html:46 +msgid "Search pages" +msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "جستجو" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "لاگین" @@ -254,7 +262,7 @@ msgid "" "message." msgstr "برای امنیت بیشتر پسورد خود را تغییر دهید" -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "" diff --git a/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.mo index 529f22eb44..4784c6491e 100644 Binary files a/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.po index 229486e259..87d7479051 100644 --- a/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" -"Last-Translator: Thierry Schott \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,11 +18,11 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "Apparence" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "Droits insuffisants" @@ -30,7 +30,7 @@ msgstr "Droits insuffisants" msgid "You don't have enough permissions for this operation." msgstr "Vous n'avez pas les permissions requises pour cette opération." -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Page non trouvée" @@ -38,7 +38,7 @@ msgstr "Page non trouvée" msgid "Sorry, but the requested page could not be found." msgstr "Désolé, la page demandée n'a pu être trouvée." -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "Erreur du serveur" @@ -54,7 +54,7 @@ msgid "" "identifier:" msgstr "Si vous avez besoin d'assistance, vous pouvez faire référence à cette erreur grâce à l'identifiant suivant :" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "A propos" @@ -67,47 +67,47 @@ msgstr "Version" msgid "Build number: %(build_number)s" msgstr "Numéro de build : %(build_number)s" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "Publié sous licence Apache 2.0" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "Copyright © 2011-2015 Roberto Rosario." -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "Activer la navigation" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Anonyme" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "Détails de l'utilisateur" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "Succès de l'opération" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "Information" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "Alerte" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "Erreur" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Actions" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "Activer la liste déroulante" @@ -125,6 +125,10 @@ msgstr "Modifie r: %(object)s" msgid "Create" msgstr "Créer" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -139,39 +143,39 @@ msgstr "Confirmer la suppression" msgid "Delete: %(object)s?" msgstr "Supprimer : %(object)s?" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "Oui" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "Non" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "Requis" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "Enregistrer" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "Soumettre" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "Annuler" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "Pas de résultats" @@ -188,34 +192,38 @@ msgstr "Total (%(start)s - %(end)s surof %(total)s) (Page %(page_number)s sur %( msgid "Total: %(total)s" msgstr "Total : %(total)s" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "Identifiant" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" -msgstr "Accueil" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" +msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "Démarrage" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "Avant d'utiliser pleinement Mayan EDMS, les éléments suivants sont nécessaires :" -#: templates/appearance/home.html:57 -msgid "Space separated terms" -msgstr "Termes séparés par des espaces" +#: templates/appearance/home.html:46 +msgid "Search pages" +msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Recherche" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "Avancé" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Connexion" @@ -255,7 +263,7 @@ msgid "" "message." msgstr "Assurez-vous de modifier votre mot de passe pour accroître la sécurité et pour ne plus avoir ce message." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "Connexion" diff --git a/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.mo index 7a32ce29ec..4f42e0d857 100644 Binary files a/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.po index 06fbd23627..0c969cfd47 100644 --- a/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -17,11 +17,11 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "" @@ -29,7 +29,7 @@ msgstr "" msgid "You don't have enough permissions for this operation." msgstr "" -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "" @@ -37,7 +37,7 @@ msgstr "" msgid "Sorry, but the requested page could not be found." msgstr "" -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -53,7 +53,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "" @@ -66,47 +66,47 @@ msgstr "Verzió" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "névtelen felhasználó" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "A felhasználó adatai" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Műveletek" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -124,6 +124,10 @@ msgstr "" msgid "Create" msgstr "" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -138,39 +142,39 @@ msgstr "" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "" @@ -187,34 +191,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "" -#: templates/appearance/home.html:57 -msgid "Space separated terms" +#: templates/appearance/home.html:46 +msgid "Search pages" msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Keresés" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Bejelentkezés" @@ -254,7 +262,7 @@ msgid "" "message." msgstr "" -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "" diff --git a/mayan/apps/appearance/locale/id/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/id/LC_MESSAGES/django.mo index 75374861db..6520a7ecc6 100644 Binary files a/mayan/apps/appearance/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/id/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/id/LC_MESSAGES/django.po index 3c79b46fc8..bc8c0bf525 100644 --- a/mayan/apps/appearance/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/id/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -17,11 +17,11 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "" @@ -29,7 +29,7 @@ msgstr "" msgid "You don't have enough permissions for this operation." msgstr "" -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "" @@ -37,7 +37,7 @@ msgstr "" msgid "Sorry, but the requested page could not be found." msgstr "" -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -53,7 +53,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "Tentang" @@ -66,47 +66,47 @@ msgstr "" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "Profil lengkap pengguna" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -124,6 +124,10 @@ msgstr "" msgid "Create" msgstr "" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -138,39 +142,39 @@ msgstr "" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "" @@ -187,34 +191,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "" -#: templates/appearance/home.html:57 -msgid "Space separated terms" +#: templates/appearance/home.html:46 +msgid "Search pages" msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "" @@ -254,7 +262,7 @@ msgid "" "message." msgstr "" -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "" diff --git a/mayan/apps/appearance/locale/it/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/it/LC_MESSAGES/django.mo index 236150fbbc..6e5a9372bb 100644 Binary files a/mayan/apps/appearance/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/it/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/it/LC_MESSAGES/django.po index 52c931c5b5..38a82440e0 100644 --- a/mayan/apps/appearance/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/it/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-09-24 10:35+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,11 +18,11 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "Aspetto" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "Permessi insufficienti" @@ -30,7 +30,7 @@ msgstr "Permessi insufficienti" msgid "You don't have enough permissions for this operation." msgstr "Non hai i permessi per effettuare questa operazione." -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Pagina non trovata" @@ -38,7 +38,7 @@ msgstr "Pagina non trovata" msgid "Sorry, but the requested page could not be found." msgstr "Scusa ma la pagina richiesta non è disponibile" -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "Errore del server" @@ -54,7 +54,7 @@ msgid "" "identifier:" msgstr "Se hai bisogno di assistenza, ti puoi riferire a questo errore con questo numero:" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "Informazioni" @@ -67,47 +67,47 @@ msgstr "Versione" msgid "Build number: %(build_number)s" msgstr "Build numbero: %(build_number)s" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "Rilasciato sotto la licenza Apache 2.0" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "Copyright © 2011-2015 Roberto Rosario." -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "Cambia navigazione" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Anonimo" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "Dettagli utente" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "Riuscito" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "Informazione" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "Attenzione" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "Errore" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Azioni " -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "Apri dropdown" @@ -125,6 +125,10 @@ msgstr "Modifica: %(object)s" msgid "Create" msgstr "Crea" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -139,39 +143,39 @@ msgstr "Conferma la cancellazione" msgid "Delete: %(object)s?" msgstr "Cancella: %(object)s?" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "Si" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "No" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "richiesto" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "Salva" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "Conferma" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "Annullare" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "Nessun risultato" @@ -188,34 +192,38 @@ msgstr "Totale (%(start)s - %(end)s di %(total)s) (Pagina %(page_number)s di %(t msgid "Total: %(total)s" msgstr "Totale: %(total)s" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "Identificatore" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" -msgstr "Home" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" +msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "Iniziare" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "Prima di usare completamente Mayan EDMS hai bisogno di:" -#: templates/appearance/home.html:57 -msgid "Space separated terms" -msgstr "Parole separate da spazi" +#: templates/appearance/home.html:46 +msgid "Search pages" +msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Cerca" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "Avanzato" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Login" @@ -255,7 +263,7 @@ msgid "" "message." msgstr "Ricordati di cambiare la password per aumentare la sicurezza e disabilitare questo messaggio." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "Accedi" diff --git a/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.mo index aa24660152..c65cd7a1fd 100644 Binary files a/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.po index 273d18e733..e933c3e7d2 100644 --- a/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Johan Braeken, 2017 # Justin Albstbstmeijer , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" -"Last-Translator: Justin Albstbstmeijer \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,11 +19,11 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "Uiterlijk" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "Permissies zijn ontoereikend" @@ -30,7 +31,7 @@ msgstr "Permissies zijn ontoereikend" msgid "You don't have enough permissions for this operation." msgstr "U heeft niet genoeg permissies voor deze operatie." -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Pagina niet gevonden" @@ -38,7 +39,7 @@ msgstr "Pagina niet gevonden" msgid "Sorry, but the requested page could not be found." msgstr "Excuses, maar de opgevraagde pagina kan niet worden gevonden." -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "Server fout" @@ -54,7 +55,7 @@ msgid "" "identifier:" msgstr "Als u hulp nodig heeft, kunt u naar deze fout refereren via de volgende identifier:" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "Informatie" @@ -67,47 +68,47 @@ msgstr "Versie" msgid "Build number: %(build_number)s" msgstr "Build nummer: %(build_number)s" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "Vrijgegeven onder de Apache 2.0 licentie" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "Copyright © 2011-2015 Roberto Rosario." -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "Toggle navigatie" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Anoniem" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "gebruiker gegevens" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "Succes" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "Informatie" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "Waarschuwing" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "Fout" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Acties" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "Toggle Dropdown" @@ -125,6 +126,10 @@ msgstr "Aanpassen: %(object)s" msgid "Create" msgstr "Maak aan" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -139,39 +144,39 @@ msgstr "Bevestig verwijdering" msgid "Delete: %(object)s?" msgstr "Verwijder: %(object)s?" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "Ja" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "Nee" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "Verplicht" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "Opslaan" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "Verstuur" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "Onderbreek" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "Geen resultaten" @@ -188,34 +193,38 @@ msgstr "Totaal (%(start)s - %(end)s van %(total)s) (Pagina %(page_number)s van % msgid "Total: %(total)s" msgstr "Totaal: %(total)s" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "Identifier" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" -msgstr "Thuis" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" +msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "Beginnen" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "Voordat u volledig gebruik kunt maken van Mayan EDMS heeft u het volgende nodig:" -#: templates/appearance/home.html:57 -msgid "Space separated terms" -msgstr "Door spatie onderbroken voorwaarden" +#: templates/appearance/home.html:46 +msgid "Search pages" +msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Zoek" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "Geavanceerd" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Aanmelden" @@ -255,7 +264,7 @@ msgid "" "message." msgstr "Pas het wachtwoord aan om de beveiliging te verbeteren en om deze melding uit te schakelen." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "Meld u aan" diff --git a/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.mo index 692170a673..40e3a92e34 100644 Binary files a/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.po index cd6198e81a..d858253086 100644 --- a/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.po @@ -9,21 +9,21 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" -"Last-Translator: Wojtek Warczakowski \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "Wygląd" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "Niewystarczające uprawnienia" @@ -31,7 +31,7 @@ msgstr "Niewystarczające uprawnienia" msgid "You don't have enough permissions for this operation." msgstr "Nie masz wystarczających uprawnień do tej operacji." -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Nie znaleziono strony" @@ -39,7 +39,7 @@ msgstr "Nie znaleziono strony" msgid "Sorry, but the requested page could not be found." msgstr "Przepraszamy, ale żądana strona nie została znaleziona." -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "Błąd serwera" @@ -55,7 +55,7 @@ msgid "" "identifier:" msgstr "Jeśli potrzebujesz pomocy, możesz odwołać się do tego błędu poprzez następujący identyfikator:" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "Informacje" @@ -68,47 +68,47 @@ msgstr "Wersja" msgid "Build number: %(build_number)s" msgstr "Numer wersji: %(build_number)s" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "Wydano na licencji Apache 2.0 License" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "Prawa autorskie © 2011-2015 Roberto Rosario." -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "Rozwiń nawigację" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Anonimowy" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "Dane użytkownika" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "Sukces" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "Informacja" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "Ostrzeżenie" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "Błąd" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Akcje" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "Rozwiń listę" @@ -126,6 +126,10 @@ msgstr "Edytuj: %(object)s" msgid "Create" msgstr "Utwórz" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -140,39 +144,39 @@ msgstr "Potwierdź usunięcie" msgid "Delete: %(object)s?" msgstr "Usunąć: %(object)s?" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "Tak" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "Nie" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "wymagane" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "Zapisz" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "Wykonaj" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "Anuluj" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "Brak wyników" @@ -189,34 +193,38 @@ msgstr "Razem (%(start)s - %(end)s z %(total)s) (Strona %(page_number)s z %(tota msgid "Total: %(total)s" msgstr "Razem: %(total)s" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "Identyfikator" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" -msgstr "Strona główna" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" +msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "Rozpoczynamy" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "Zanim w pełni zaczniesz używać Mayan EDMS musisz:" -#: templates/appearance/home.html:57 -msgid "Space separated terms" -msgstr "Słowa rozdzielone spacjami" +#: templates/appearance/home.html:46 +msgid "Search pages" +msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Szukaj" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "Zaawansowane" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Logowanie" @@ -256,7 +264,7 @@ msgid "" "message." msgstr "Aby poprawić bezpieczeństwo i usunąć ten komunikat, nie zapomnij zmienić hasła." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "Zaloguj" diff --git a/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.mo index ae5be274c1..039f63497c 100644 Binary files a/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.po index f78cdfeeae..16ec66c17f 100644 --- a/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -17,11 +17,11 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "Permissões insuficientes" @@ -29,7 +29,7 @@ msgstr "Permissões insuficientes" msgid "You don't have enough permissions for this operation." msgstr "Não possui permissões suficientes para esta operação." -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Página não encontrada" @@ -37,7 +37,7 @@ msgstr "Página não encontrada" msgid "Sorry, but the requested page could not be found." msgstr "Desculpe, mas a página solicitada não foi encontrada." -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -53,7 +53,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "" @@ -66,47 +66,47 @@ msgstr "Versão" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Anónimo" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "Detalhes do utilizador" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Ações" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -124,6 +124,10 @@ msgstr "Editar: %(object)s" msgid "Create" msgstr "Criar" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -138,39 +142,39 @@ msgstr "Confirmar eliminação" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "Sim" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "Não" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "obrigatório" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "Guardar" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "Submeter" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "Cancelar" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "Sem resultados" @@ -187,34 +191,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "Identificador" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" -msgstr "início" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" +msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "" -#: templates/appearance/home.html:57 -msgid "Space separated terms" +#: templates/appearance/home.html:46 +msgid "Search pages" msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Procurar" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Iniciar a sessão" @@ -254,7 +262,7 @@ msgid "" "message." msgstr "Certifique-se de que altera a senha para aumentar a segurança e que desativa esta mensagem." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "" diff --git a/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.mo index 000377ce15..2150d97229 100644 Binary files a/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.po index 8255aa7b29..e3045d7b98 100644 --- a/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-11-17 22:36+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,11 +18,11 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "Aparência" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "Permissão insuficiente" @@ -30,7 +30,7 @@ msgstr "Permissão insuficiente" msgid "You don't have enough permissions for this operation." msgstr "Você não tem permissões suficientes para essa operação." -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Página não encontrada" @@ -38,7 +38,7 @@ msgstr "Página não encontrada" msgid "Sorry, but the requested page could not be found." msgstr "Desculpe, mas a página solicitada não pôde ser encontrada." -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "Erro de servidor" @@ -54,7 +54,7 @@ msgid "" "identifier:" msgstr "Se você precisar de ajuda, você pode fazer referência a este erro através do seguinte identificador:" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "Sobre" @@ -67,47 +67,47 @@ msgstr "Versão" msgid "Build number: %(build_number)s" msgstr "Número de compilação: %(build_number)s" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "Lançado sob a licença Apache 2.0" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "Todos os direitos reservados © 2011-2015 Roberto Rosario." -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "Ativar/desativar navegação" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Anônimo" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "Detalhes do usuário" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "Sucesso" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "Informação" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "Advertência" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "Erro" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Ações" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "Mostrar/esconder menu" @@ -125,6 +125,10 @@ msgstr "Editar: %(object)s" msgid "Create" msgstr "Criar" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -139,39 +143,39 @@ msgstr "Confirmar Exclusão" msgid "Delete: %(object)s?" msgstr "Excluir: %(object)s?" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "Sim" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "Não" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "requerido" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "Salvar" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "Enviar" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "Cancelar" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "Nenhum resultado" @@ -188,34 +192,38 @@ msgstr "Total (%(start)s - %(end)s de %(total)s) (Página %(page_number)s de %(t msgid "Total: %(total)s" msgstr "Total: %(total)s" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "Identificador" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" -msgstr "Início" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" +msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "Iniciando" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "Antes de começar a usar Mayan EDMS você precisa do seguinte:" -#: templates/appearance/home.html:57 -msgid "Space separated terms" -msgstr "Termos de espaço separado" +#: templates/appearance/home.html:46 +msgid "Search pages" +msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Pesquisa" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "Avançada" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Iniciar sessão" @@ -255,7 +263,7 @@ msgid "" "message." msgstr "Certifique-se de alterar a senha para aumentar a segurança e para desativar esta mensagem." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "Entrar" diff --git a/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.mo index c8b033d399..19141e0df0 100644 Binary files a/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.po index da6e701d83..e7dbcf215b 100644 --- a/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-04-17 13:14+0000\n" -"Last-Translator: Stefaniu Criste \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,11 +18,11 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "permisiuni insuficiente" @@ -30,7 +30,7 @@ msgstr "permisiuni insuficiente" msgid "You don't have enough permissions for this operation." msgstr "Nu aveți permisiuni suficiente pentru această operație." -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Pagina nu a fost gasită" @@ -38,7 +38,7 @@ msgstr "Pagina nu a fost gasită" msgid "Sorry, but the requested page could not be found." msgstr "Ne pare rău, dar pagina solicitată nu a putut fi găsit." -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -54,7 +54,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "Despre" @@ -67,47 +67,47 @@ msgstr "Versiune" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "anonim" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "detalii utilizator" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "Succes" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "Informație" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "Alertă" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "Eroare" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Acţiuni" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -125,6 +125,10 @@ msgstr "Modifică %(object)s" msgid "Create" msgstr "Creează" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -139,39 +143,39 @@ msgstr "Confirmă stergerea" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "Da" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "Nu" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "necesar" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "salvează" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "Trimiteţi" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "Anulează" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "" @@ -188,34 +192,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "ID" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" -msgstr "Acasă" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" +msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "Să începem" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "Înainte de a putea utiliza Mayan EDMS în totalitate, trebuie sa faceți următoarele:" -#: templates/appearance/home.html:57 -msgid "Space separated terms" +#: templates/appearance/home.html:46 +msgid "Search pages" msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Căută" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Conectare" @@ -255,7 +263,7 @@ msgid "" "message." msgstr "Asigurați-vă că pentru a schimba parola pentru a spori securitatea și pentru a dezactiva acest mesaj." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "Înscriere" diff --git a/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.mo index c78354810c..d79cb57da6 100644 Binary files a/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.po index b3fcb7f110..c3897fdc02 100644 --- a/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-07-14 11:22+0000\n" -"Last-Translator: lilo.panic\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,11 +18,11 @@ msgstr "" "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" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "Внешний вид" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "Недостаточно прав" @@ -30,7 +30,7 @@ msgstr "Недостаточно прав" msgid "You don't have enough permissions for this operation." msgstr "У вас недостаточно прав для этой операции." -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Страница не найдена" @@ -38,7 +38,7 @@ msgstr "Страница не найдена" msgid "Sorry, but the requested page could not be found." msgstr "Извините, но запрашиваемая страница не найдена." -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "Ошибка сервера" @@ -54,7 +54,7 @@ msgid "" "identifier:" msgstr "Если вам нужна помощь, вы можете сослаться на эту ошибку по следующему идентификатору:" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "Инфо" @@ -67,47 +67,47 @@ msgstr "Версия" msgid "Build number: %(build_number)s" msgstr "Версия сборки: %(build_number)s" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "Выпущено под лицензией Apache 2.0" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "© 2011-2015 Roberto Rosario, все права защищены." -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "Переключение навигации" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Анонимно" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "сведения о пользователе" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "Успех" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "Информация" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "Предупреждение" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "Ошибка" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Действия" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "Переключение выпадающего списка" @@ -125,6 +125,10 @@ msgstr "Редактировать: %(object)s" msgid "Create" msgstr "Создать" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -139,39 +143,39 @@ msgstr "Подтвердить удаление" msgid "Delete: %(object)s?" msgstr "Удалить: %(object)s?" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "Да" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "Нет" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "требуется" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "Сохранить" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "Подтвердить" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "Отменить" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "Нет результатов" @@ -188,34 +192,38 @@ msgstr "Всего (%(start)s - %(end)s из %(total)s) (Страница %(page msgid "Total: %(total)s" msgstr "Всего: %(total)s" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "Идентификатор" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" -msgstr "Начало" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" +msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "Приступая к работе" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "Вам кое-что понадобится, прежде чем вы начнёте полноценно использовать Mayan EDMS:" -#: templates/appearance/home.html:57 -msgid "Space separated terms" -msgstr "Поисковые запросы через пробел" +#: templates/appearance/home.html:46 +msgid "Search pages" +msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Поиск" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "Дополнительно" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Войти" @@ -255,7 +263,7 @@ msgid "" "message." msgstr "Обязательно измените пароль для повышения безопасности и отключения этого сообщения." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "Вход" diff --git a/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.mo index 4aeea11ec0..981c57414d 100644 Binary files a/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.po index bad58f7e75..65b0f248d9 100644 --- a/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -17,11 +17,11 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "" @@ -29,7 +29,7 @@ msgstr "" msgid "You don't have enough permissions for this operation." msgstr "" -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "" @@ -37,7 +37,7 @@ msgstr "" msgid "Sorry, but the requested page could not be found." msgstr "" -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -53,7 +53,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "" @@ -66,47 +66,47 @@ msgstr "" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -124,6 +124,10 @@ msgstr "" msgid "Create" msgstr "" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -138,39 +142,39 @@ msgstr "" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "" @@ -187,34 +191,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "" -#: templates/appearance/home.html:57 -msgid "Space separated terms" +#: templates/appearance/home.html:46 +msgid "Search pages" msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "" @@ -254,7 +262,7 @@ msgid "" "message." msgstr "" -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "" diff --git a/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.mo index 6ae170c99b..56bf7d5dbf 100644 Binary files a/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.po index 54ea773fe8..5e2b4dab90 100644 --- a/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -17,11 +17,11 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "" @@ -29,7 +29,7 @@ msgstr "" msgid "You don't have enough permissions for this operation." msgstr "" -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "Không tìm thấy trang" @@ -37,7 +37,7 @@ msgstr "Không tìm thấy trang" msgid "Sorry, but the requested page could not be found." msgstr "" -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -53,7 +53,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "" @@ -66,47 +66,47 @@ msgstr "Phiên bản" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "Anonymous" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "Chi tiết người dùng" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "Các thao tác" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -124,6 +124,10 @@ msgstr "" msgid "Create" msgstr "Tạo" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -138,39 +142,39 @@ msgstr "Xác nhận xóa" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "yêu cầu" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "" @@ -187,34 +191,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "" -#: templates/appearance/home.html:57 -msgid "Space separated terms" +#: templates/appearance/home.html:46 +msgid "Search pages" msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "Tìm kiếm" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "Đăng nhập" @@ -254,7 +262,7 @@ msgid "" "message." msgstr "Bạn nên thay đổi mật khẩu để tăng tính bảo mật và để không nhìn thấy lời nhắc này nữa." -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "" diff --git a/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.mo index f1b389e29b..61de3079f0 100644 Binary files a/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.po index 8a737fffeb..89259474b5 100644 --- a/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -17,11 +17,11 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:11 +#: apps.py:12 msgid "Appearance" msgstr "" -#: templates/403.html:5 templates/403.html.py:9 +#: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" msgstr "权限不足" @@ -29,7 +29,7 @@ msgstr "权限不足" msgid "You don't have enough permissions for this operation." msgstr "你没有足够权限执行当前操作" -#: templates/404.html:5 templates/404.html.py:9 +#: templates/404.html:5 templates/404.html:9 msgid "Page not found" msgstr "页不存在" @@ -37,7 +37,7 @@ msgstr "页不存在" msgid "Sorry, but the requested page could not be found." msgstr "抱歉,请求页不存在。" -#: templates/500.html:5 templates/500.html.py:9 +#: templates/500.html:5 templates/500.html:9 msgid "Server error" msgstr "" @@ -53,7 +53,7 @@ msgid "" "identifier:" msgstr "" -#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +#: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" msgstr "" @@ -66,47 +66,47 @@ msgstr "版本" msgid "Build number: %(build_number)s" msgstr "" -#: templates/appearance/about.html:88 +#: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" msgstr "基于Apache 2.0许可证" -#: templates/appearance/about.html:100 +#: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." msgstr "" -#: templates/appearance/base.html:43 +#: templates/appearance/base.html:45 msgid "Toggle navigation" msgstr "" -#: templates/appearance/base.html:72 +#: templates/appearance/base.html:75 +msgid "Profile" +msgstr "" + +#: templates/appearance/base.html:81 msgid "Anonymous" msgstr "匿名用户" -#: templates/appearance/base.html:74 -msgid "User details" -msgstr "用户信息" - -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Success" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Information" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Warning" msgstr "" -#: templates/appearance/base.html:87 +#: templates/appearance/base.html:115 msgid "Error" msgstr "" -#: templates/appearance/base.html:116 +#: templates/appearance/base.html:144 msgid "Actions" msgstr "操作" -#: templates/appearance/base.html:117 +#: templates/appearance/base.html:146 msgid "Toggle Dropdown" msgstr "" @@ -124,6 +124,10 @@ msgstr "编辑:%(object)s" msgid "Create" msgstr "创建" +#: templates/appearance/dashboard_widget.html:25 +msgid "View details" +msgstr "" + #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" @@ -138,39 +142,39 @@ msgstr "确认删除" msgid "Delete: %(object)s?" msgstr "" -#: templates/appearance/generic_confirm.html:47 +#: templates/appearance/generic_confirm.html:48 msgid "Yes" msgstr "是" -#: templates/appearance/generic_confirm.html:49 +#: templates/appearance/generic_confirm.html:52 msgid "No" msgstr "否" #: templates/appearance/generic_form_instance.html:39 #: templates/appearance/generic_form_instance.html:46 #: templates/appearance/generic_form_subtemplate.html:51 -#: templates/appearance/generic_multiform_subtemplate.html:43 +#: templates/appearance/generic_multiform_subtemplate.html:42 msgid "required" msgstr "必填" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" msgstr "保存" #: templates/appearance/generic_form_subtemplate.html:71 -#: templates/appearance/generic_list_subtemplate.html:31 -#: templates/appearance/generic_multiform_subtemplate.html:65 +#: templates/appearance/generic_list_subtemplate.html:33 +#: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" msgstr "提交" #: templates/appearance/generic_form_subtemplate.html:74 -#: templates/appearance/generic_multiform_subtemplate.html:69 +#: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" msgstr "取消" #: templates/appearance/generic_list_horizontal.html:21 -#: templates/appearance/generic_list_subtemplate.html:108 +#: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" msgstr "" @@ -187,34 +191,38 @@ msgstr "" msgid "Total: %(total)s" msgstr "" -#: templates/appearance/generic_list_subtemplate.html:51 +#: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" msgstr "标识" -#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 -msgid "Home" +#: templates/appearance/home.html:9 templates/appearance/home.html:13 +msgid "Dashboard" msgstr "" -#: templates/appearance/home.html:21 +#: templates/appearance/home.html:22 msgid "Getting started" msgstr "" -#: templates/appearance/home.html:24 +#: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" msgstr "" -#: templates/appearance/home.html:57 -msgid "Space separated terms" +#: templates/appearance/home.html:46 +msgid "Search pages" msgstr "" -#: templates/appearance/home.html:59 +#: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" msgstr "搜索" -#: templates/appearance/home.html:60 +#: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" msgstr "" +#: templates/appearance/home.html:56 +msgid "Search documents" +msgstr "" + #: templates/appearance/login.html:10 msgid "Login" msgstr "登录" @@ -254,7 +262,7 @@ msgid "" "message." msgstr "请修改密码以提高安全性,并且禁止显示此信息。" -#: templates/appearance/login.html:45 templates/appearance/login.html.py:54 +#: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" msgstr "" diff --git a/mayan/apps/appearance/static/appearance/css/base.css b/mayan/apps/appearance/static/appearance/css/base.css index ace6e9cf3d..1e6e6dfd23 100644 --- a/mayan/apps/appearance/static/appearance/css/base.css +++ b/mayan/apps/appearance/static/appearance/css/base.css @@ -151,15 +151,19 @@ a i { padding-right: 3px; } -.panel-dashboard-widget { +.dashboard-widget { box-shadow: 1px 1px 1px rgba(0,0,0,0.3); border: 1px solid black; } -.panel-dashboard-widget .panel-heading i { +.dashboard-widget .panel-heading i { text-shadow: 1px 1px 1px rgba(0,0,0,0.3); } +.dashboard-widget-icon { + font-size: 200%; +} + .select2-container--default .select2-selection--multiple .select2-selection__choice .label { padding-bottom: 1px; } @@ -167,3 +171,19 @@ a i { .tag-container .label { margin-right: 2px; } + +/* Metadata */ +.metadata-display { + display: inline-block; + min-width: 200px; + padding-right: 10px; + width: 49%; +} + +/* Content */ +@media (min-width:1200px) { + .container { + min-width: 1170px; + width: 95%; + } +} diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/cerulean/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/cerulean/bootstrap.min.css deleted file mode 100644 index dcf0996283..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/cerulean/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#555555;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2fa4e7;text-decoration:none}a:hover,a:focus{color:#157ab5;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:#317eac}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#2fa4e7}a.text-primary:hover,a.text-primary:focus{color:#178acc}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-danger{color:#b94a48}a.text-danger:hover,a.text-danger:focus{color:#953b39}.bg-primary{color:#fff;background-color:#2fa4e7}a.bg-primary:hover,a.bg-primary:focus{background-color:#178acc}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eeeeee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eeeeee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#555555;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:14px;line-height:1.42857143;color:#555555}.form-control{display:block;width:100%;height:38px;padding:8px 12px;font-size:14px;line-height:1.42857143;color:#555555;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:4px;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:38px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:54px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:54px;line-height:54px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:54px;line-height:54px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:47.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-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}.has-success .input-group-addon{color:#468847;border-color:#468847;background-color:#dff0d8}.has-success .form-control-feedback{color:#468847}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-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}.has-warning .input-group-addon{color:#c09853;border-color:#c09853;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#c09853}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;border-color:#b94a48;background-color:#f2dede}.has-error .form-control-feedback{color:#b94a48}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#959595}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:29px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19.6666662px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#555555;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#555555;background-color:#ffffff;border-color:rgba(0,0,0,0.1)}.btn-default:focus,.btn-default.focus{color:#555555;background-color:#e6e6e6;border-color:rgba(0,0,0,0.1)}.btn-default:hover{color:#555555;background-color:#e6e6e6;border-color:rgba(0,0,0,0.1)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#555555;background-color:#e6e6e6;border-color:rgba(0,0,0,0.1)}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#555555;background-color:#d4d4d4;border-color:rgba(0,0,0,0.1)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#ffffff;border-color:rgba(0,0,0,0.1)}.btn-default .badge{color:#ffffff;background-color:#555555}.btn-primary{color:#ffffff;background-color:#2fa4e7;border-color:#2fa4e7}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#178acc;border-color:#105b87}.btn-primary:hover{color:#ffffff;background-color:#178acc;border-color:#1684c2}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#178acc;border-color:#1684c2}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#1474ac;border-color:#105b87}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#2fa4e7;border-color:#2fa4e7}.btn-primary .badge{color:#2fa4e7;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#73a839;border-color:#73a839}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#59822c;border-color:#324919}.btn-success:hover{color:#ffffff;background-color:#59822c;border-color:#547a29}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#59822c;border-color:#547a29}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#476723;border-color:#324919}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#73a839;border-color:#73a839}.btn-success .badge{color:#73a839;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#033c73;border-color:#033c73}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#022241;border-color:#000000}.btn-info:hover{color:#ffffff;background-color:#022241;border-color:#011d37}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#022241;border-color:#011d37}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#01101f;border-color:#000000}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#033c73;border-color:#033c73}.btn-info .badge{color:#033c73;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#dd5600;border-color:#dd5600}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#aa4200;border-color:#5e2400}.btn-warning:hover{color:#ffffff;background-color:#aa4200;border-color:#a03e00}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#aa4200;border-color:#a03e00}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#863400;border-color:#5e2400}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#dd5600;border-color:#dd5600}.btn-warning .badge{color:#dd5600;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#c71c22;border-color:#c71c22}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#9a161a;border-color:#570c0f}.btn-danger:hover{color:#ffffff;background-color:#9a161a;border-color:#911419}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#9a161a;border-color:#911419}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#7b1115;border-color:#570c0f}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#c71c22;border-color:#c71c22}.btn-danger .badge{color:#c71c22;background-color:#ffffff}.btn-link{color:#2fa4e7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#157ab5;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:14px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#2fa4e7}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2fa4e7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999999;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:54px;line-height:54px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555555;text-align:center;background-color:#eeeeee;border:1px solid #cccccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#2fa4e7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2fa4e7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:6px;margin-bottom:6px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:6px;margin-bottom:6px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#2fa4e7;border-color:#1995dc}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-default .navbar-text{color:#dddddd}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#178acc}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#178acc}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#dddddd;background-color:transparent}.navbar-default .navbar-toggle{border-color:#178acc}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#178acc}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#1995dc}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#178acc;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#178acc}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#178acc}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#dddddd;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#dddddd}.navbar-inverse{background-color:#033c73;border-color:#022f5a}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#022f5a}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#022f5a}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#022f5a}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#022f5a}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#022a50}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#022f5a;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#022f5a}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#022f5a}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#022f5a}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#022f5a}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#2fa4e7;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#157ab5;background-color:#eeeeee;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.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:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#2fa4e7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#178acc}.label-success{background-color:#73a839}.label-success[href]:hover,.label-success[href]:focus{background-color:#59822c}.label-info{background-color:#033c73}.label-info[href]:hover,.label-info[href]:focus{background-color:#022241}.label-warning{background-color:#dd5600}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#aa4200}.label-danger{background-color:#c71c22}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#9a161a}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#2fa4e7;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2fa4e7;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eeeeee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2fa4e7}.thumbnail .caption{padding:9px;color:#555555}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{background-color:#fcf8e3;border-color:#fbeed5;color:#c09853}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 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:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#2fa4e7;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#73a839}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#033c73}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#dd5600}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#c71c22}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2fa4e7;border-color:#2fa4e7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e6f4fc}.list-group-item-success{color:#468847;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#468847}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}.list-group-item-info{color:#3a87ad;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#3a87ad}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}.list-group-item-warning{color:#c09853;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#c09853}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}.list-group-item-danger{color:#b94a48;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#b94a48}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#555555;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#555555}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#dddddd}.panel-primary>.panel-heading{color:#ffffff;background-color:#2fa4e7;border-color:#dddddd}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-primary>.panel-heading .badge{color:#2fa4e7;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-success{border-color:#dddddd}.panel-success>.panel-heading{color:#468847;background-color:#73a839;border-color:#dddddd}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-success>.panel-heading .badge{color:#73a839;background-color:#468847}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-info{border-color:#dddddd}.panel-info>.panel-heading{color:#3a87ad;background-color:#033c73;border-color:#dddddd}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-info>.panel-heading .badge{color:#033c73;background-color:#3a87ad}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-warning{border-color:#dddddd}.panel-warning>.panel-heading{color:#c09853;background-color:#dd5600;border-color:#dddddd}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-warning>.panel-heading .badge{color:#dd5600;background-color:#c09853}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-danger{border-color:#dddddd}.panel-danger>.panel-heading{color:#b94a48;background-color:#c71c22;border-color:#dddddd}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-danger>.panel-heading .badge{color:#c71c22;background-color:#b94a48}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-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-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#000000;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:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.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:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{background-image:-webkit-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5);background-image:-o-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5);background-image:-webkit-gradient(linear, left top, left bottom, from(#54b4eb), color-stop(60%, #2fa4e7), to(#1d9ce5));background-image:linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff54b4eb', endColorstr='#ff1d9ce5', GradientType=0);border-bottom:1px solid #178acc;-webkit-filter:none;filter:none;-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-default .badge{background-color:#fff;color:#2fa4e7}.navbar-inverse{background-image:-webkit-linear-gradient(#04519b, #044687 60%, #033769);background-image:-o-linear-gradient(#04519b, #044687 60%, #033769);background-image:-webkit-gradient(linear, left top, left bottom, from(#04519b), color-stop(60%, #044687), to(#033769));background-image:linear-gradient(#04519b, #044687 60%, #033769);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff04519b', endColorstr='#ff033769', GradientType=0);-webkit-filter:none;filter:none;border-bottom:1px solid #022241}.navbar-inverse .badge{background-color:#fff;color:#033c73}.navbar .navbar-nav>li>a,.navbar-brand{text-shadow:0 1px 0 rgba(0,0,0,0.1)}@media (max-width:767px){.navbar .dropdown-header{color:#fff}.navbar .dropdown-menu a{color:#fff}}.btn{text-shadow:0 1px 0 rgba(0,0,0,0.1)}.btn .caret{border-top-color:#fff}.btn-default{background-image:-webkit-linear-gradient(#fff, #fff 60%, #f5f5f5);background-image:-o-linear-gradient(#fff, #fff 60%, #f5f5f5);background-image:-webkit-gradient(linear, left top, left bottom, from(#fff), color-stop(60%, #fff), to(#f5f5f5));background-image:linear-gradient(#fff, #fff 60%, #f5f5f5);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff5f5f5', GradientType=0);-webkit-filter:none;filter:none;border-bottom:1px solid #e6e6e6}.btn-default:hover{color:#555555}.btn-default .caret{border-top-color:#555555}.btn-default{background-image:-webkit-linear-gradient(#fff, #fff 60%, #f5f5f5);background-image:-o-linear-gradient(#fff, #fff 60%, #f5f5f5);background-image:-webkit-gradient(linear, left top, left bottom, from(#fff), color-stop(60%, #fff), to(#f5f5f5));background-image:linear-gradient(#fff, #fff 60%, #f5f5f5);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff5f5f5', GradientType=0);-webkit-filter:none;filter:none;border-bottom:1px solid #e6e6e6}.btn-primary{background-image:-webkit-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5);background-image:-o-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5);background-image:-webkit-gradient(linear, left top, left bottom, from(#54b4eb), color-stop(60%, #2fa4e7), to(#1d9ce5));background-image:linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff54b4eb', endColorstr='#ff1d9ce5', GradientType=0);-webkit-filter:none;filter:none;border-bottom:1px solid #178acc}.btn-success{background-image:-webkit-linear-gradient(#88c149, #73a839 60%, #699934);background-image:-o-linear-gradient(#88c149, #73a839 60%, #699934);background-image:-webkit-gradient(linear, left top, left bottom, from(#88c149), color-stop(60%, #73a839), to(#699934));background-image:linear-gradient(#88c149, #73a839 60%, #699934);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff88c149', endColorstr='#ff699934', GradientType=0);-webkit-filter:none;filter:none;border-bottom:1px solid #59822c}.btn-info{background-image:-webkit-linear-gradient(#04519b, #033c73 60%, #02325f);background-image:-o-linear-gradient(#04519b, #033c73 60%, #02325f);background-image:-webkit-gradient(linear, left top, left bottom, from(#04519b), color-stop(60%, #033c73), to(#02325f));background-image:linear-gradient(#04519b, #033c73 60%, #02325f);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff04519b', endColorstr='#ff02325f', GradientType=0);-webkit-filter:none;filter:none;border-bottom:1px solid #022241}.btn-warning{background-image:-webkit-linear-gradient(#ff6707, #dd5600 60%, #c94e00);background-image:-o-linear-gradient(#ff6707, #dd5600 60%, #c94e00);background-image:-webkit-gradient(linear, left top, left bottom, from(#ff6707), color-stop(60%, #dd5600), to(#c94e00));background-image:linear-gradient(#ff6707, #dd5600 60%, #c94e00);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff6707', endColorstr='#ffc94e00', GradientType=0);-webkit-filter:none;filter:none;border-bottom:1px solid #aa4200}.btn-danger{background-image:-webkit-linear-gradient(#e12b31, #c71c22 60%, #b5191f);background-image:-o-linear-gradient(#e12b31, #c71c22 60%, #b5191f);background-image:-webkit-gradient(linear, left top, left bottom, from(#e12b31), color-stop(60%, #c71c22), to(#b5191f));background-image:linear-gradient(#e12b31, #c71c22 60%, #b5191f);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe12b31', endColorstr='#ffb5191f', GradientType=0);-webkit-filter:none;filter:none;border-bottom:1px solid #9a161a}.panel-primary .panel-heading,.panel-success .panel-heading,.panel-warning .panel-heading,.panel-danger .panel-heading,.panel-info .panel-heading,.panel-primary .panel-title,.panel-success .panel-title,.panel-warning .panel-title,.panel-danger .panel-title,.panel-info .panel-title{color:#fff} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/cosmo/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/cosmo/bootstrap.min.css deleted file mode 100644 index 2c959bdc61..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/cosmo/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2780e3;text-decoration:none}a:hover,a:focus{color:#165ba8;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #e6e6e6}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-weight:300;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#ff7518;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#2780e3}a.text-primary:hover,a.text-primary:focus{color:#1967be}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#2780e3}a.bg-primary:hover,a.bg-primary:focus{background-color:#1967be}.bg-success{background-color:#3fb618}a.bg-success:hover,a.bg-success:focus{background-color:#2f8912}.bg-info{background-color:#9954bb}a.bg-info:hover,a.bg-info:focus{background-color:#7e3f9d}.bg-warning{background-color:#ff7518}a.bg-warning:hover,a.bg-warning:focus{background-color:#e45c00}.bg-danger{background-color:#ff0039}a.bg-danger:hover,a.bg-danger:focus{background-color:#cc002e}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #e6e6e6}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #e6e6e6}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e6e6e6;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#3fb618}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#379f15}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#9954bb}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#8d46b0}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ff7518}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#fe6600}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#ff0039}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e60033}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#333333}.form-control{display:block;width:100%;height:43px;padding:10px 18px;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:0;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#e6e6e6;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:43px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:31px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:64px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:11px;padding-bottom:11px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-sm{height:31px;line-height:31px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.form-group-sm select.form-control{height:31px;line-height:31px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:31px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.5}.input-lg{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:64px;line-height:64px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}.form-group-lg select.form-control{height:64px;line-height:64px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:64px;min-height:40px;padding:19px 30px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:53.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:43px;height:43px;line-height:43px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:64px;height:64px;line-height:64px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:31px;height:31px;line-height:31px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#3fb618}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff7518}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff0039}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:24.9999994px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 18px;font-size:15px;line-height:1.42857143;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#222222;border-color:#222222}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#090909;border-color:#000000}.btn-default:hover{color:#ffffff;background-color:#090909;border-color:#040404}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#090909;border-color:#040404}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#000000;border-color:#000000}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#222222;border-color:#222222}.btn-default .badge{color:#222222;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#1967be;border-color:#10427b}.btn-primary:hover{color:#ffffff;background-color:#1967be;border-color:#1862b5}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#1967be;border-color:#1862b5}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#15569f;border-color:#10427b}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#2780e3;border-color:#2780e3}.btn-primary .badge{color:#2780e3;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#3fb618;border-color:#3fb618}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#2f8912;border-color:#184509}.btn-success:hover{color:#ffffff;background-color:#2f8912;border-color:#2c8011}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#2f8912;border-color:#2c8011}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#24690e;border-color:#184509}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#3fb618;border-color:#3fb618}.btn-success .badge{color:#3fb618;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9954bb;border-color:#9954bb}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#7e3f9d;border-color:#522967}.btn-info:hover{color:#ffffff;background-color:#7e3f9d;border-color:#783c96}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#7e3f9d;border-color:#783c96}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#6a3484;border-color:#522967}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#9954bb;border-color:#9954bb}.btn-info .badge{color:#9954bb;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff7518;border-color:#ff7518}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#e45c00;border-color:#983d00}.btn-warning:hover{color:#ffffff;background-color:#e45c00;border-color:#da5800}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#e45c00;border-color:#da5800}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#c04d00;border-color:#983d00}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#ff7518;border-color:#ff7518}.btn-warning .badge{color:#ff7518;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#ff0039;border-color:#ff0039}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#cc002e;border-color:#80001c}.btn-danger:hover{color:#ffffff;background-color:#cc002e;border-color:#c2002b}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#cc002e;border-color:#c2002b}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#a80026;border-color:#80001c}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#ff0039;border-color:#ff0039}.btn-danger .badge{color:#ff0039;background-color:#ffffff}.btn-link{color:#2780e3;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#165ba8;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#2780e3}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2780e3}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:64px;line-height:64px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:31px;line-height:31px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 18px;font-size:15px;font-weight:normal;line-height:1;color:#333333;text-align:center;background-color:#e6e6e6;border:1px solid #cccccc;border-radius:0}.input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:0}.input-group-addon.input-lg{padding:18px 30px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#e6e6e6}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#e6e6e6;border-color:#2780e3}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#e6e6e6 #e6e6e6 #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2780e3}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:14.5px 15px;font-size:19px;line-height:21px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.25px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:14.5px;padding-bottom:14.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:3.5px;margin-bottom:3.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:3.5px;margin-bottom:3.5px}.navbar-btn.btn-sm{margin-top:9.5px;margin-bottom:9.5px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:14.5px;margin-bottom:14.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#222222;border-color:#121212}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#090909}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#121212}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#090909;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#2780e3;border-color:#1967be}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#1967be}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#1a6ecc}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#1967be;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ffffff;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#ffffff}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 18px;line-height:1.42857143;text-decoration:none;color:#2780e3;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#165ba8;background-color:#e6e6e6;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 30px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:0}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#e6e6e6}.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:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#222222}.label-default[href]:hover,.label-default[href]:focus{background-color:#090909}.label-primary{background-color:#2780e3}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1967be}.label-success{background-color:#3fb618}.label-success[href]:hover,.label-success[href]:focus{background-color:#2f8912}.label-info{background-color:#9954bb}.label-info[href]:hover,.label-info[href]:focus{background-color:#7e3f9d}.label-warning{background-color:#ff7518}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#e45c00}.label-danger{background-color:#ff0039}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#cc002e}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#2780e3;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2780e3;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#e6e6e6}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#cccccc}.container .jumbotron,.container-fluid .jumbotron{border-radius:0}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2780e3}.thumbnail .caption{padding:9px;color:#333333}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#3fb618;border-color:#4e9f15;color:#ffffff}.alert-success hr{border-top-color:#438912}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#9954bb;border-color:#7643a8;color:#ffffff}.alert-info hr{border-top-color:#693c96}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff7518;border-color:#ff4309;color:#ffffff}.alert-warning hr{border-top-color:#ee3800}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#ff0039;border-color:#f0005e;color:#ffffff}.alert-danger hr{border-top-color:#d60054}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#2780e3;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3fb618}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#9954bb}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#ff7518}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#ff0039}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#e6e6e6;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2780e3;border-color:#dddddd}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#dceafa}.list-group-item-success{color:#ffffff;background-color:#3fb618}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#379f15}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#9954bb}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#8d46b0}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#ff7518}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#fe6600}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#ff0039}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#e60033}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#2780e3}.panel-primary>.panel-heading{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2780e3}.panel-primary>.panel-heading .badge{color:#2780e3;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2780e3}.panel-success{border-color:#4e9f15}.panel-success>.panel-heading{color:#ffffff;background-color:#3fb618;border-color:#4e9f15}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#4e9f15}.panel-success>.panel-heading .badge{color:#3fb618;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#4e9f15}.panel-info{border-color:#7643a8}.panel-info>.panel-heading{color:#ffffff;background-color:#9954bb;border-color:#7643a8}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#7643a8}.panel-info>.panel-heading .badge{color:#9954bb;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#7643a8}.panel-warning{border-color:#ff4309}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff7518;border-color:#ff4309}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff4309}.panel-warning>.panel-heading .badge{color:#ff7518;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff4309}.panel-danger{border-color:#f0005e}.panel-danger>.panel-heading{color:#ffffff;background-color:#ff0039;border-color:#f0005e}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f0005e}.panel-danger>.panel-heading .badge{color:#ff0039;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f0005e}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:0;-webkit-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-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:0}.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:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:-1 -1 0 0}.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:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar-inverse .badge{background-color:#fff;color:#2780e3}body{-webkit-font-smoothing:antialiased}.text-primary,.text-primary:hover{color:#2780e3}.text-success,.text-success:hover{color:#3fb618}.text-danger,.text-danger:hover{color:#ff0039}.text-warning,.text-warning:hover{color:#ff7518}.text-info,.text-info:hover{color:#9954bb}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success a,.table .success a,table .warning a,.table .warning a,table .danger a,.table .danger a,table .info a,.table .info a{color:#fff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#ff7518}.has-warning .form-control,.has-warning .form-control:focus,.has-warning .input-group-addon{border:1px solid #ff7518}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#ff0039}.has-error .form-control,.has-error .form-control:focus,.has-error .input-group-addon{border:1px solid #ff0039}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#3fb618}.has-success .form-control,.has-success .form-control:focus,.has-success .input-group-addon{border:1px solid #3fb618}.nav-pills>li>a{border-radius:0}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:none}.close{text-decoration:none;text-shadow:none;opacity:0.4}.close:hover,.close:focus{opacity:1}.alert{border:none}.alert .alert-link{text-decoration:underline;color:#fff}.label{border-radius:0}.progress{height:8px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:8px;line-height:8px}.panel-heading,.panel-footer{border-top-right-radius:0;border-top-left-radius:0}.panel-default .close{color:#333333}a.list-group-item-success.active{background-color:#3fb618}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#379f15}a.list-group-item-warning.active{background-color:#ff7518}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#fe6600}a.list-group-item-danger.active{background-color:#ff0039}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e60033}.modal .close{color:#333333}.popover{color:#333333} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/cyborg/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/cyborg/bootstrap.min.css deleted file mode 100644 index b3d808f985..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/cyborg/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Roboto:400,700");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#888888;background-color:#060606}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2a9fd6;text-decoration:none}a:hover,a:focus{color:#2a9fd6;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#282828;border:1px solid #282828;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #282828}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:#ffffff}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#888888}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:56px}h2,.h2{font-size:45px}h3,.h3{font-size:34px}h4,.h4{font-size:24px}h5,.h5{font-size:20px}h6,.h6{font-size:16px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#ff8800;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#888888}.text-primary{color:#2a9fd6}a.text-primary:hover,a.text-primary:focus{color:#2180ac}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#2a9fd6}a.bg-primary:hover,a.bg-primary:focus{background-color:#2180ac}.bg-success{background-color:#77b300}a.bg-success:hover,a.bg-success:focus{background-color:#558000}.bg-info{background-color:#9933cc}a.bg-info:hover,a.bg-info:focus{background-color:#7a29a3}.bg-warning{background-color:#ff8800}a.bg-warning:hover,a.bg-warning:focus{background-color:#cc6d00}.bg-danger{background-color:#cc0000}a.bg-danger:hover,a.bg-danger:focus{background-color:#990000}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #282828}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #888888}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #282828}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#555555}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #282828;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#282828;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:#181818}caption{padding-top:8px;padding-bottom:8px;color:#888888;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #282828}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #282828}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #282828}.table .table{background-color:#060606}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #282828}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #282828}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#080808}.table-hover>tbody>tr:hover{background-color:#282828}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#282828}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#1b1b1b}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#77b300}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#669a00}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#9933cc}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#8a2eb8}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ff8800}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#e67a00}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#cc0000}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#b30000}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #282828}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#888888;border:0;border-bottom:1px solid #282828}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:14px;line-height:1.42857143;color:#888888}.form-control{display:block;width:100%;height:38px;padding:8px 12px;font-size:14px;line-height:1.42857143;color:#888888;background-color:#ffffff;background-image:none;border:1px solid #282828;border-radius:4px;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#888888;opacity:1}.form-control:-ms-input-placeholder{color:#888888}.form-control::-webkit-input-placeholder{color:#888888}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#adafae;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:38px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:54px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:54px;line-height:54px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:54px;line-height:54px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:47.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#77b300}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff8800}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#cc0000}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#c8c8c8}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:29px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19.6666662px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#424242;border-color:#424242}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#282828;border-color:#020202}.btn-default:hover{color:#ffffff;background-color:#282828;border-color:#232323}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#282828;border-color:#232323}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#161616;border-color:#020202}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#424242;border-color:#424242}.btn-default .badge{color:#424242;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#2a9fd6;border-color:#2a9fd6}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#2180ac;border-color:#15506c}.btn-primary:hover{color:#ffffff;background-color:#2180ac;border-color:#1f79a3}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#2180ac;border-color:#1f79a3}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#1b698e;border-color:#15506c}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#2a9fd6;border-color:#2a9fd6}.btn-primary .badge{color:#2a9fd6;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#77b300;border-color:#77b300}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#558000;border-color:#223300}.btn-success:hover{color:#ffffff;background-color:#558000;border-color:#4e7600}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#558000;border-color:#4e7600}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#3d5c00;border-color:#223300}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#77b300;border-color:#77b300}.btn-success .badge{color:#77b300;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9933cc;border-color:#9933cc}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#7a29a3;border-color:#4c1966}.btn-info:hover{color:#ffffff;background-color:#7a29a3;border-color:#74279b}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#7a29a3;border-color:#74279b}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#652287;border-color:#4c1966}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#9933cc;border-color:#9933cc}.btn-info .badge{color:#9933cc;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff8800;border-color:#ff8800}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#cc6d00;border-color:#804400}.btn-warning:hover{color:#ffffff;background-color:#cc6d00;border-color:#c26700}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#cc6d00;border-color:#c26700}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#a85a00;border-color:#804400}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#ff8800;border-color:#ff8800}.btn-warning .badge{color:#ff8800;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#cc0000;border-color:#cc0000}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#990000;border-color:#4d0000}.btn-danger:hover{color:#ffffff;background-color:#990000;border-color:#8f0000}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#990000;border-color:#8f0000}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#750000;border-color:#4d0000}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#cc0000;border-color:#cc0000}.btn-danger .badge{color:#cc0000;background-color:#ffffff}.btn-link{color:#2a9fd6;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a9fd6;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#888888;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:14px;text-align:left;background-color:#222222;border:1px solid #444444;border:1px solid rgba(255,255,255,0.1);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:rgba(255,255,255,0.1)}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#ffffff;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#2a9fd6}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2a9fd6}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#888888}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#888888;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:54px;line-height:54px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:14px;font-weight:normal;line-height:1;color:#888888;text-align:center;background-color:#adafae;border:1px solid #282828;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#222222}.nav>li.disabled>a{color:#888888}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#888888;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#222222;border-color:#2a9fd6}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #282828}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:transparent transparent #282828}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#ffffff;background-color:#2a9fd6;border:1px solid #282828;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#060606}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2a9fd6}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#060606}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:6px;margin-bottom:6px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:6px;margin-bottom:6px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#060606;border-color:#282828}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-text{color:#888888}.navbar-default .navbar-nav>li>a{color:#888888}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#888888;background-color:transparent}.navbar-default .navbar-toggle{border-color:#282828}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#282828}.navbar-default .navbar-toggle .icon-bar{background-color:#cccccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#282828}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:transparent;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#888888}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#888888;background-color:transparent}}.navbar-default .navbar-link{color:#888888}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#888888}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#888888}.navbar-inverse{background-color:#222222;border-color:#080808}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#888888}.navbar-inverse .navbar-nav>li>a{color:#888888}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#aaaaaa;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:transparent;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#888888}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#aaaaaa;background-color:transparent}}.navbar-inverse .navbar-link{color:#888888}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#888888}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#aaaaaa}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#222222;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ffffff}.breadcrumb>.active{color:#888888}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#ffffff;background-color:#222222;border:1px solid #282828;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#ffffff;background-color:#2a9fd6;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#ffffff;background-color:#2a9fd6;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#888888;background-color:#222222;border-color:#282828;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#222222;border:1px solid #282828;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#2a9fd6}.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:#888888;background-color:#222222;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#424242}.label-default[href]:hover,.label-default[href]:focus{background-color:#282828}.label-primary{background-color:#2a9fd6}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#2180ac}.label-success{background-color:#77b300}.label-success[href]:hover,.label-success[href]:focus{background-color:#558000}.label-info{background-color:#9933cc}.label-info[href]:hover,.label-info[href]:focus{background-color:#7a29a3}.label-warning{background-color:#ff8800}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#cc6d00}.label-danger{background-color:#cc0000}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#990000}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#2a9fd6;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2a9fd6;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#151515}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#000000}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#282828;border:1px solid #282828;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2a9fd6}.thumbnail .caption{padding:9px;color:#888888}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#77b300;border-color:#809a00;color:#ffffff}.alert-success hr{border-top-color:#6a8000}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#9933cc;border-color:#6e2caf;color:#ffffff}.alert-info hr{border-top-color:#61279b}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff8800;border-color:#f05800;color:#ffffff}.alert-warning hr{border-top-color:#d64f00}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#cc0000;border-color:#bd001f;color:#ffffff}.alert-danger hr{border-top-color:#a3001b}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 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:#222222;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#2a9fd6;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#77b300}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#9933cc}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#ff8800}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#cc0000}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#222222;border:1px solid #282828}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#888888}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#ffffff}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#888888;background-color:#484848}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#adafae;color:#888888;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#888888}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2a9fd6;border-color:#2a9fd6}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#d5ecf7}.list-group-item-success{color:#ffffff;background-color:#77b300}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#669a00}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#9933cc}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#8a2eb8}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#ff8800}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#e67a00}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#cc0000}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#b30000}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#222222;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#3c3c3c;border-top:1px solid #282828;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #282828}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #282828}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #282828}.panel-default{border-color:#282828}.panel-default>.panel-heading{color:#888888;background-color:#3c3c3c;border-color:#282828}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#282828}.panel-default>.panel-heading .badge{color:#3c3c3c;background-color:#888888}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#282828}.panel-primary{border-color:#2a9fd6}.panel-primary>.panel-heading{color:#ffffff;background-color:#2a9fd6;border-color:#2a9fd6}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2a9fd6}.panel-primary>.panel-heading .badge{color:#2a9fd6;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2a9fd6}.panel-success{border-color:#809a00}.panel-success>.panel-heading{color:#ffffff;background-color:#77b300;border-color:#809a00}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#809a00}.panel-success>.panel-heading .badge{color:#77b300;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#809a00}.panel-info{border-color:#6e2caf}.panel-info>.panel-heading{color:#ffffff;background-color:#9933cc;border-color:#6e2caf}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#6e2caf}.panel-info>.panel-heading .badge{color:#9933cc;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#6e2caf}.panel-warning{border-color:#f05800}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff8800;border-color:#f05800}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f05800}.panel-warning>.panel-heading .badge{color:#ff8800;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f05800}.panel-danger{border-color:#bd001f}.panel-danger>.panel-heading{color:#ffffff;background-color:#cc0000;border-color:#bd001f}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bd001f}.panel-danger>.panel-heading .badge{color:#cc0000;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bd001f}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#151515;border:1px solid #030303;border-radius:4px;-webkit-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-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#202020;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #282828;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #282828}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#000000;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:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#202020;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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;background-color:#181818;border-bottom:1px solid #0b0b0b;border-radius:5px 5px 0 0}.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:#666666;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#202020}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#666666;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#202020}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#666666;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#202020}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#666666;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#202020;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.text-primary,.text-primary:hover{color:#2a9fd6}.text-success,.text-success:hover{color:#77b300}.text-danger,.text-danger:hover{color:#cc0000}.text-warning,.text-warning:hover{color:#ff8800}.text-info,.text-info:hover{color:#9933cc}.bg-success,.bg-info,.bg-warning,.bg-danger{color:#fff}table,.table{color:#fff}table a:not(.btn),.table a:not(.btn){color:#fff;text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .text-muted,.table .text-muted{color:#888888}.table-responsive>.table{background-color:#181818}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#ff8800}.has-warning .form-control,.has-warning .form-control:focus,.has-warning .input-group-addon{border-color:#ff8800}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#cc0000}.has-error .form-control,.has-error .form-control:focus,.has-error .input-group-addon{border-color:#cc0000}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#77b300}.has-success .form-control,.has-success .form-control:focus,.has-success .input-group-addon{border-color:#77b300}legend{color:#fff}.input-group-addon{background-color:#424242}.nav-tabs a,.nav-pills a,.breadcrumb a,.pager a{color:#fff}.alert .alert-link,.alert a{color:#ffffff;text-decoration:underline}.alert .close{text-decoration:none}.close{color:#fff;text-decoration:none;opacity:0.4}.close:hover,.close:focus{color:#fff;opacity:1}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#282828}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border-color:#282828}a.list-group-item-success.active{background-color:#77b300}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#669a00}a.list-group-item-warning.active{background-color:#ff8800}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#e67a00}a.list-group-item-danger.active{background-color:#cc0000}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#b30000}.jumbotron h1,.jumbotron h2,.jumbotron h3,.jumbotron h4,.jumbotron h5,.jumbotron h6{color:#fff} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/darkly/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/darkly/bootstrap.min.css deleted file mode 100644 index c640607347..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/darkly/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Lato:400,700,400italic");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#ffffff;background-color:#222222}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#0ce3ac;text-decoration:none}a:hover,a:focus{color:#0ce3ac;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:2px;line-height:1.42857143;background-color:#222222;border:1px solid #464545;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #464545}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#f39c12;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#375a7f}a.text-primary:hover,a.text-primary:focus{color:#28415b}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#375a7f}a.bg-primary:hover,a.bg-primary:focus{background-color:#28415b}.bg-success{background-color:#00bc8c}a.bg-success:hover,a.bg-success:focus{background-color:#008966}.bg-info{background-color:#3498db}a.bg-info:hover,a.bg-info:focus{background-color:#217dbb}.bg-warning{background-color:#f39c12}a.bg-warning:hover,a.bg-warning:focus{background-color:#c87f0a}.bg-danger{background-color:#e74c3c}a.bg-danger:hover,a.bg-danger:focus{background-color:#d62c1a}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid transparent}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #464545}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #464545;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#303030;background-color:#ebebeb;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #464545}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #464545}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #464545}.table .table{background-color:#222222}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #464545}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #464545}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#3d3d3d}.table-hover>tbody>tr:hover{background-color:#464545}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#464545}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#393838}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#00bc8c}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#00a379}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#3498db}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#258cd1}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#f39c12}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#e08e0b}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#e74c3c}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e43725}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #464545}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#ffffff;border:0;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#464545}.form-control{display:block;width:100%;height:45px;padding:10px 15px;font-size:15px;line-height:1.42857143;color:#464545;background-color:#ffffff;background-image:none;border:1px solid #f1f1f1;border-radius:4px;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#ffffff;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(255,255,255,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(255,255,255,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#ebebeb;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:45px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:35px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:66px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:11px;padding-bottom:11px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-sm{height:35px;line-height:35px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:35px;line-height:35px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:35px;min-height:34px;padding:7px 9px;font-size:13px;line-height:1.5}.input-lg{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-lg{height:66px;line-height:66px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:66px;line-height:66px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:66px;min-height:40px;padding:19px 27px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:56.25px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:45px;height:45px;line-height:45px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:66px;height:66px;line-height:66px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:35px;height:35px;line-height:35px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#00bc8c}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#f39c12}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#e74c3c}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#ffffff}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:24.9999994px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:7px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 15px;font-size:15px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#464545;border-color:#464545}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#2c2c2c;border-color:#060606}.btn-default:hover{color:#ffffff;background-color:#2c2c2c;border-color:#272727}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#2c2c2c;border-color:#272727}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#1a1a1a;border-color:#060606}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#464545;border-color:#464545}.btn-default .badge{color:#464545;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#375a7f;border-color:#375a7f}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#28415b;border-color:#101b26}.btn-primary:hover{color:#ffffff;background-color:#28415b;border-color:#253c54}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#28415b;border-color:#253c54}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#1d2f43;border-color:#101b26}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#375a7f;border-color:#375a7f}.btn-primary .badge{color:#375a7f;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#00bc8c;border-color:#00bc8c}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#008966;border-color:#003d2d}.btn-success:hover{color:#ffffff;background-color:#008966;border-color:#007f5e}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#008966;border-color:#007f5e}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#00654b;border-color:#003d2d}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#00bc8c;border-color:#00bc8c}.btn-success .badge{color:#00bc8c;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#3498db;border-color:#3498db}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#217dbb;border-color:#16527a}.btn-info:hover{color:#ffffff;background-color:#217dbb;border-color:#2077b2}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#217dbb;border-color:#2077b2}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#1c699d;border-color:#16527a}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#3498db;border-color:#3498db}.btn-info .badge{color:#3498db;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#c87f0a;border-color:#7f5006}.btn-warning:hover{color:#ffffff;background-color:#c87f0a;border-color:#be780a}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#c87f0a;border-color:#be780a}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#a66908;border-color:#7f5006}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f39c12;border-color:#f39c12}.btn-warning .badge{color:#f39c12;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#d62c1a;border-color:#921e12}.btn-danger:hover{color:#ffffff;background-color:#d62c1a;border-color:#cd2a19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#d62c1a;border-color:#cd2a19}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#b62516;border-color:#921e12}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#e74c3c;border-color:#e74c3c}.btn-danger .badge{color:#e74c3c;background-color:#ffffff}.btn-link{color:#0ce3ac;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#0ce3ac;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:15px;text-align:left;background-color:#303030;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#464545}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#ebebeb;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#375a7f}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#375a7f}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:66px;line-height:66px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:35px;line-height:35px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 15px;font-size:15px;font-weight:normal;line-height:1;color:#464545;text-align:center;background-color:#464545;border:1px solid transparent;border-radius:4px}.input-group-addon.input-sm{padding:6px 9px;font-size:13px;border-radius:3px}.input-group-addon.input-lg{padding:18px 27px;font-size:19px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#303030}.nav>li.disabled>a{color:#605e5e}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#605e5e;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#303030;border-color:#0ce3ac}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #464545}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#464545 #464545 #464545}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#00bc8c;background-color:#222222;border:1px solid #464545;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ebebeb}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#222222}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#375a7f}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ebebeb}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#222222}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:19.5px 15px;font-size:19px;line-height:21px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:9.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:19.5px;padding-bottom:19.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:7.5px;margin-bottom:7.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:7.5px;margin-bottom:7.5px}.navbar-btn.btn-sm{margin-top:12.5px;margin-bottom:12.5px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:19.5px;margin-bottom:19.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#375a7f;border-color:transparent}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#00bc8c;background-color:transparent}.navbar-default .navbar-text{color:#777777}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#00bc8c;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#28415b}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#28415b}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#28415b}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#28415b;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#00bc8c;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#28415b}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#00bc8c}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#00bc8c}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#00bc8c;border-color:transparent}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#375a7f;background-color:transparent}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#375a7f;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#00a379}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#aaaaaa;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#008966}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#008966}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#009871}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#00a379;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#375a7f;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#00a379}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#aaaaaa;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#375a7f}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#375a7f}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#aaaaaa}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#464545;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ffffff}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 15px;line-height:1.42857143;text-decoration:none;color:#ffffff;background-color:#00bc8c;border:1px solid transparent;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#ffffff;background-color:#00dba3;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#ffffff;background-color:#00dba3;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#ffffff;background-color:#007053;border-color:transparent;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 27px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:6px 9px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#00bc8c;border:1px solid transparent;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#00dba3}.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:#dddddd;background-color:#00bc8c;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#464545}.label-default[href]:hover,.label-default[href]:focus{background-color:#2c2c2c}.label-primary{background-color:#375a7f}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#28415b}.label-success{background-color:#00bc8c}.label-success[href]:hover,.label-success[href]:focus{background-color:#008966}.label-info{background-color:#3498db}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb}.label-warning{background-color:#f39c12}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a}.label-danger{background-color:#e74c3c}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#464545;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#375a7f;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#303030}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#161616}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:2px;margin-bottom:21px;line-height:1.42857143;background-color:#222222;border:1px solid #464545;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#0ce3ac}.thumbnail .caption{padding:9px;color:#ffffff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#00bc8c;border-color:#00bc8c;color:#ffffff}.alert-success hr{border-top-color:#00a379}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#3498db;border-color:#3498db;color:#ffffff}.alert-info hr{border-top-color:#258cd1}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#f39c12;border-color:#f39c12;color:#ffffff}.alert-warning hr{border-top-color:#e08e0b}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#ffffff}.alert-danger hr{border-top-color:#e43725}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#ebebeb;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#375a7f;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#00bc8c}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#3498db}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#f39c12}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#e74c3c}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#303030;border:1px solid #464545}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#0ce3ac}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#0bcb9a}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#0ce3ac;background-color:transparent}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#ebebeb;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#375a7f;border-color:#375a7f}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#a8c0da}.list-group-item-success{color:#ffffff;background-color:#00bc8c}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#00a379}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#3498db}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#258cd1}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#f39c12}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#e08e0b}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#e74c3c}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#e43725}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#303030;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#464545;border-top:1px solid #464545;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #464545}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #464545}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #464545}.panel-default{border-color:#464545}.panel-default>.panel-heading{color:#ffffff;background-color:#303030;border-color:#464545}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#464545}.panel-default>.panel-heading .badge{color:#303030;background-color:#ffffff}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#464545}.panel-primary{border-color:#375a7f}.panel-primary>.panel-heading{color:#ffffff;background-color:#375a7f;border-color:#375a7f}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#375a7f}.panel-primary>.panel-heading .badge{color:#375a7f;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#375a7f}.panel-success{border-color:#00bc8c}.panel-success>.panel-heading{color:#ffffff;background-color:#00bc8c;border-color:#00bc8c}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#00bc8c}.panel-success>.panel-heading .badge{color:#00bc8c;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#00bc8c}.panel-info{border-color:#3498db}.panel-info>.panel-heading{color:#ffffff;background-color:#3498db;border-color:#3498db}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3498db}.panel-info>.panel-heading .badge{color:#3498db;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3498db}.panel-warning{border-color:#f39c12}.panel-warning>.panel-heading{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f39c12}.panel-warning>.panel-heading .badge{color:#f39c12;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f39c12}.panel-danger{border-color:#e74c3c}.panel-danger>.panel-heading{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e74c3c}.panel-danger>.panel-heading .badge{color:#e74c3c;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e74c3c}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#303030;border:1px solid transparent;border-radius:4px;-webkit-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-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:none;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#303030;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.7;filter:alpha(opacity=70)}.modal-header{padding:15px;border-bottom:1px solid #464545;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #464545}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#000000;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:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#303030;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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:15px;background-color:#282828;border-bottom:1px solid #1c1c1c;border-radius:5px 5px 0 0}.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:#666666;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#303030}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#666666;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#303030}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#666666;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#303030}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#666666;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#303030;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border-width:0}.navbar-default .badge{background-color:#fff;color:#375a7f}.navbar-inverse .badge{background-color:#fff;color:#00bc8c}.navbar-brand{line-height:1}.navbar-form .form-control{background-color:white}.navbar-form .form-control:focus{border-color:white}.btn{border-width:2px}.btn:active{-webkit-box-shadow:none;box-shadow:none}.btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.text-primary,.text-primary:hover{color:#4673a3}.text-success,.text-success:hover{color:#00bc8c}.text-danger,.text-danger:hover{color:#e74c3c}.text-warning,.text-warning:hover{color:#f39c12}.text-info,.text-info:hover{color:#3498db}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success>th>a,.table .success>th>a,table .warning>th>a,.table .warning>th>a,table .danger>th>a,.table .danger>th>a,table .info>th>a,.table .info>th>a,table .success>td>a,.table .success>td>a,table .warning>td>a,.table .warning>td>a,table .danger>td>a,.table .danger>td>a,table .info>td>a,.table .info>td>a,table .success>a,.table .success>a,table .warning>a,.table .warning>a,table .danger>a,.table .danger>a,table .info>a,.table .info>a{color:#fff}table>thead>tr>th,.table>thead>tr>th,table>tbody>tr>th,.table>tbody>tr>th,table>tfoot>tr>th,.table>tfoot>tr>th,table>thead>tr>td,.table>thead>tr>td,table>tbody>tr>td,.table>tbody>tr>td,table>tfoot>tr>td,.table>tfoot>tr>td{border:none}table-bordered>thead>tr>th,.table-bordered>thead>tr>th,table-bordered>tbody>tr>th,.table-bordered>tbody>tr>th,table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>th,table-bordered>thead>tr>td,.table-bordered>thead>tr>td,table-bordered>tbody>tr>td,.table-bordered>tbody>tr>td,table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #464545}input,textarea{color:#464545}.form-control,input,textarea{border:2px hidden transparent;-webkit-box-shadow:none;box-shadow:none}.form-control:focus,input:focus,textarea:focus{-webkit-box-shadow:none;box-shadow:none}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f39c12}.has-warning .form-control,.has-warning .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.has-warning .input-group-addon{border-color:#f39c12}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#e74c3c}.has-error .form-control,.has-error .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.has-error .input-group-addon{border-color:#e74c3c}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#00bc8c}.has-success .form-control,.has-success .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.has-success .input-group-addon{border-color:#00bc8c}.input-group-addon{color:#ffffff}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:#464545}.nav-tabs>li>a,.nav-pills>li>a{color:#fff}.pager a,.pager a:hover{color:#fff}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{background-color:#007053}.breadcrumb a{color:#fff}.close{text-decoration:none;text-shadow:none;opacity:0.4}.close:hover,.close:focus{opacity:1}.alert .alert-link{color:#fff;text-decoration:underline}.progress{height:10px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:10px;line-height:10px}.well{-webkit-box-shadow:none;box-shadow:none}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border-color:#464545}a.list-group-item-success.active{background-color:#00bc8c}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#00a379}a.list-group-item-warning.active{background-color:#f39c12}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#e08e0b}a.list-group-item-danger.active{background-color:#e74c3c}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e43725}.popover{color:#ffffff}.panel-default>.panel-heading{background-color:#464545} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/flatly/bootstrap.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/flatly/bootstrap.css index e24ad33222..acc88cc2d3 100644 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/flatly/bootstrap.css +++ b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/flatly/bootstrap.css @@ -268,8 +268,8 @@ th { } @font-face { font-family: 'Glyphicons Halflings'; - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); + src: url('../../bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.eot'); + src: url('../../bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../../bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../../bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../../bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../../bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); } .glyphicon { position: relative; diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/journal/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/journal/bootstrap.min.css deleted file mode 100644 index 28ef0c6326..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/journal/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=News+Cycle:400,700");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:Georgia,"Times New Roman",Times,serif;font-size:15px;line-height:1.42857143;color:#777777;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#eb6864;text-decoration:none}a:hover,a:focus{color:#e22620;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"News Cycle","Arial Narrow Bold",sans-serif;font-weight:700;line-height:1.1;color:#000000}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#eb6864}a.text-primary:hover,a.text-primary:focus{color:#e53c37}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-danger{color:#b94a48}a.text-danger:hover,a.text-danger:focus{color:#953b39}.bg-primary{color:#fff;background-color:#eb6864}a.bg-primary:hover,a.bg-primary:focus{background-color:#e53c37}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #eeeeee}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #eeeeee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#777777;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:15px;line-height:1.42857143;color:#777777}.form-control{display:block;width:100%;height:39px;padding:8px 12px;font-size:15px;line-height:1.42857143;color:#777777;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:4px;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:39px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:31px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:56px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:3px}select.input-sm{height:31px;line-height:31px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:31px;line-height:31px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:31px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.5}.input-lg{height:56px;padding:14px 16px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-lg{height:56px;line-height:56px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:56px;padding:14px 16px;font-size:19px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:56px;line-height:56px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:56px;min-height:40px;padding:15px 16px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:48.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:39px;height:39px;line-height:39px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:56px;height:56px;line-height:56px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:31px;height:31px;line-height:31px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-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}.has-success .input-group-addon{color:#468847;border-color:#468847;background-color:#dff0d8}.has-success .form-control-feedback{color:#468847}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-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}.has-warning .input-group-addon{color:#c09853;border-color:#c09853;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#c09853}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;border-color:#b94a48;background-color:#f2dede}.has-error .form-control-feedback{color:#b94a48}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#b7b7b7}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:30px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19.6666662px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:15px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#999999;border-color:#999999}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#808080;border-color:#595959}.btn-default:hover{color:#ffffff;background-color:#808080;border-color:#7a7a7a}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#808080;border-color:#7a7a7a}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#6e6e6e;border-color:#595959}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#999999;border-color:#999999}.btn-default .badge{color:#999999;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#eb6864;border-color:#eb6864}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#e53c37;border-color:#b81c18}.btn-primary:hover{color:#ffffff;background-color:#e53c37;border-color:#e4332e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#e53c37;border-color:#e4332e}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#dc221c;border-color:#b81c18}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#eb6864;border-color:#eb6864}.btn-primary .badge{color:#eb6864;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#22b24c;border-color:#22b24c}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#1a873a;border-color:#0e471e}.btn-success:hover{color:#ffffff;background-color:#1a873a;border-color:#187f36}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#1a873a;border-color:#187f36}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#14692d;border-color:#0e471e}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#22b24c;border-color:#22b24c}.btn-success .badge{color:#22b24c;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#336699;border-color:#336699}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#264c73;border-color:#132639}.btn-info:hover{color:#ffffff;background-color:#264c73;border-color:#24476b}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#264c73;border-color:#24476b}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#1d3b58;border-color:#132639}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#336699;border-color:#336699}.btn-info .badge{color:#336699;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f5e625;border-color:#f5e625}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#ddce0a;border-color:#948a07}.btn-warning:hover{color:#ffffff;background-color:#ddce0a;border-color:#d3c50a}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#ddce0a;border-color:#d3c50a}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#bbae09;border-color:#948a07}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f5e625;border-color:#f5e625}.btn-warning .badge{color:#f5e625;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#f57a00;border-color:#f57a00}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#c26100;border-color:#763b00}.btn-danger:hover{color:#ffffff;background-color:#c26100;border-color:#b85c00}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#c26100;border-color:#b85c00}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#9e4f00;border-color:#763b00}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#f57a00;border-color:#f57a00}.btn-danger .badge{color:#f57a00;background-color:#ffffff}.btn-link{color:#eb6864;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#e22620;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:19px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:13px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#eb6864}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#eb6864}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:56px;padding:14px 16px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:56px;line-height:56px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:31px;line-height:31px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:15px;font-weight:normal;line-height:1;color:#777777;text-align:center;background-color:#eeeeee;border:1px solid #cccccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:19px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#eb6864}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#777777;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#eb6864}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:19.5px 15px;font-size:19px;line-height:21px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:9.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:19.5px;padding-bottom:19.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:10.5px;margin-bottom:10.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:10.5px;margin-bottom:10.5px}.navbar-btn.btn-sm{margin-top:14.5px;margin-bottom:14.5px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:19.5px;margin-bottom:19.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#ffffff;border-color:#eeeeee}.navbar-default .navbar-brand{color:#000000}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-text{color:#000000}.navbar-default .navbar-nav>li>a{color:#000000}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#dddddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#dddddd}.navbar-default .navbar-toggle .icon-bar{background-color:#cccccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#eeeeee}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#eeeeee;color:#000000}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#000000}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#000000}.navbar-default .navbar-link:hover{color:#000000}.navbar-default .btn-link{color:#000000}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#000000}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#eb6864;border-color:#e53c37}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#e53c37}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#e53c37}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#e74944}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#e74b47;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#e53c37}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#e53c37}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#eb6864;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#e22620;background-color:#eeeeee;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.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:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#eb6864}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#e53c37}.label-success{background-color:#22b24c}.label-success[href]:hover,.label-success[href]:focus{background-color:#1a873a}.label-info{background-color:#336699}.label-info[href]:hover,.label-info[href]:focus{background-color:#264c73}.label-warning{background-color:#f5e625}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ddce0a}.label-danger{background-color:#f57a00}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c26100}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#eb6864;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#eb6864;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eeeeee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#eb6864}.thumbnail .caption{padding:9px;color:#777777}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{background-color:#fcf8e3;border-color:#fbeed5;color:#c09853}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#eb6864;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#22b24c}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#336699}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#f5e625}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#f57a00}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#eb6864;border-color:#eb6864}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#ffffff}.list-group-item-success{color:#468847;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#468847}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}.list-group-item-info{color:#3a87ad;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#3a87ad}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}.list-group-item-warning{color:#c09853;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#c09853}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}.list-group-item-danger{color:#b94a48;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#b94a48}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#777777;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#777777}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#eb6864}.panel-primary>.panel-heading{color:#ffffff;background-color:#eb6864;border-color:#eb6864}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#eb6864}.panel-primary>.panel-heading .badge{color:#eb6864;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#eb6864}.panel-success{border-color:#22b24c}.panel-success>.panel-heading{color:#468847;background-color:#22b24c;border-color:#22b24c}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#22b24c}.panel-success>.panel-heading .badge{color:#22b24c;background-color:#468847}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#22b24c}.panel-info{border-color:#336699}.panel-info>.panel-heading{color:#3a87ad;background-color:#336699;border-color:#336699}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#336699}.panel-info>.panel-heading .badge{color:#336699;background-color:#3a87ad}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#336699}.panel-warning{border-color:#f5e625}.panel-warning>.panel-heading{color:#c09853;background-color:#f5e625;border-color:#f5e625}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f5e625}.panel-warning>.panel-heading .badge{color:#f5e625;background-color:#c09853}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f5e625}.panel-danger{border-color:#f57a00}.panel-danger>.panel-heading{color:#b94a48;background-color:#f57a00;border-color:#f57a00}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f57a00}.panel-danger>.panel-heading .badge{color:#f57a00;background-color:#b94a48}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f57a00}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-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-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:Georgia,"Times New Roman",Times,serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#000000;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:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:Georgia,"Times New Roman",Times,serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.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:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{font-size:18px;font-family:"News Cycle","Arial Narrow Bold",sans-serif;font-weight:700}.navbar-default .badge{background-color:#000;color:#fff}.navbar-inverse .badge{background-color:#fff;color:#eb6864}.navbar-brand{font-size:inherit;font-weight:700;text-transform:uppercase}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f57a00}.has-warning .form-control,.has-warning .form-control:focus{border-color:#f57a00}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#eb6864}.has-error .form-control,.has-error .form-control:focus{border-color:#eb6864}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#22b24c}.has-success .form-control,.has-success .form-control:focus{border-color:#22b24c}.badge{padding-bottom:4px;vertical-align:3px;font-size:10px}.jumbotron h1,.jumbotron h2,.jumbotron h3,.jumbotron h4,.jumbotron h5,.jumbotron h6{font-family:"News Cycle","Arial Narrow Bold",sans-serif;font-weight:700;color:#000}.panel-primary .panel-title,.panel-success .panel-title,.panel-warning .panel-title,.panel-danger .panel-title,.panel-info .panel-title{color:#fff} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/lumen/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/lumen/bootstrap.min.css deleted file mode 100644 index fd97f41138..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/lumen/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,400italic");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Source Sans Pro","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#555555;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#158cba;text-decoration:none}a:hover,a:focus{color:#158cba;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:5px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #eeeeee;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.1;color:#333333}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#ff851b;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#158cba}a.text-primary:hover,a.text-primary:focus{color:#106a8c}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#158cba}a.bg-primary:hover,a.bg-primary:focus{background-color:#106a8c}.bg-success{background-color:#28b62c}a.bg-success:hover,a.bg-success:focus{background-color:#1f8c22}.bg-info{background-color:#75caeb}a.bg-info:hover,a.bg-info:focus{background-color:#48b9e5}.bg-warning{background-color:#ff851b}a.bg-warning:hover,a.bg-warning:focus{background-color:#e76b00}.bg-danger{background-color:#ff4136}a.bg-danger:hover,a.bg-danger:focus{background-color:#ff1103}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eeeeee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eeeeee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:2px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#28b62c}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#23a127}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#75caeb}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#5fc1e8}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ff851b}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#ff7701}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#ff4136}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ff291c}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:8px;font-size:14px;line-height:1.42857143;color:#555555}.form-control{display:block;width:100%;height:38px;padding:7px 12px;font-size:14px;line-height:1.42857143;color:#555555;background-color:#ffffff;background-image:none;border:1px solid #e7e7e7;border-radius:4px;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:38px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:28px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:52px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:8px;padding-bottom:8px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:28px;padding:4px 10px;font-size:12px;line-height:1.5;border-radius:2px}select.input-sm{height:28px;line-height:28px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:28px;padding:4px 10px;font-size:12px;line-height:1.5;border-radius:2px}.form-group-sm select.form-control{height:28px;line-height:28px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:28px;min-height:32px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:52px;padding:13px 16px;font-size:18px;line-height:1.3333333;border-radius:5px}select.input-lg{height:52px;line-height:52px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:52px;padding:13px 16px;font-size:18px;line-height:1.3333333;border-radius:5px}.form-group-lg select.form-control{height:52px;line-height:52px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:52px;min-height:38px;padding:14px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:47.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:52px;height:52px;line-height:52px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:28px;height:28px;line-height:28px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#28b62c}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff851b}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff4136}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#959595}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:8px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:28px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:8px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:18.3333329px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:5px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:7px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#555555;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#555555;background-color:#eeeeee;border-color:#e2e2e2}.btn-default:focus,.btn-default.focus{color:#555555;background-color:#d5d5d5;border-color:#a2a2a2}.btn-default:hover{color:#555555;background-color:#d5d5d5;border-color:#c3c3c3}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#555555;background-color:#d5d5d5;border-color:#c3c3c3}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#555555;background-color:#c3c3c3;border-color:#a2a2a2}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#eeeeee;border-color:#e2e2e2}.btn-default .badge{color:#eeeeee;background-color:#555555}.btn-primary{color:#ffffff;background-color:#158cba;border-color:#127ba3}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#106a8c;border-color:#052531}.btn-primary:hover{color:#ffffff;background-color:#106a8c;border-color:#0c516c}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#106a8c;border-color:#0c516c}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#0c516c;border-color:#052531}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#158cba;border-color:#127ba3}.btn-primary .badge{color:#158cba;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#28b62c;border-color:#23a127}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#1f8c22;border-color:#0c390e}.btn-success:hover{color:#ffffff;background-color:#1f8c22;border-color:#186f1b}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#1f8c22;border-color:#186f1b}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#186f1b;border-color:#0c390e}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#28b62c;border-color:#23a127}.btn-success .badge{color:#28b62c;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#75caeb;border-color:#5fc1e8}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#48b9e5;border-color:#1984ae}.btn-info:hover{color:#ffffff;background-color:#48b9e5;border-color:#29ade0}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#48b9e5;border-color:#29ade0}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#29ade0;border-color:#1984ae}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#75caeb;border-color:#5fc1e8}.btn-info .badge{color:#75caeb;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff851b;border-color:#ff7701}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#e76b00;border-color:#813c00}.btn-warning:hover{color:#ffffff;background-color:#e76b00;border-color:#c35b00}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#e76b00;border-color:#c35b00}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#c35b00;border-color:#813c00}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#ff851b;border-color:#ff7701}.btn-warning .badge{color:#ff851b;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#ff4136;border-color:#ff291c}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#ff1103;border-color:#9c0900}.btn-danger:hover{color:#ffffff;background-color:#ff1103;border-color:#de0c00}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#ff1103;border-color:#de0c00}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#de0c00;border-color:#9c0900}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#ff4136;border-color:#ff291c}.btn-danger .badge{color:#ff4136;background-color:#ffffff}.btn-link{color:#158cba;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#158cba;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:13px 16px;font-size:18px;line-height:1.3333333;border-radius:5px}.btn-sm,.btn-group-sm>.btn{padding:4px 10px;font-size:12px;line-height:1.5;border-radius:2px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:2px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:14px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid #e7e7e7;border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#eeeeee}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#999999;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#333333;background-color:transparent}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#158cba}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#eeeeee}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999999;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:52px;padding:13px 16px;font-size:18px;line-height:1.3333333;border-radius:5px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:52px;line-height:52px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:28px;padding:4px 10px;font-size:12px;line-height:1.5;border-radius:2px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:28px;line-height:28px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:7px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555555;text-align:center;background-color:#eeeeee;border:1px solid #e7e7e7;border-radius:4px}.input-group-addon.input-sm{padding:4px 10px;font-size:12px;border-radius:2px}.input-group-addon.input-lg{padding:13px 16px;font-size:18px;border-radius:5px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#ffffff}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#ffffff;border-color:#158cba}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #e7e7e7}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #e7e7e7}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #e7e7e7;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #e7e7e7}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #e7e7e7;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#158cba}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #e7e7e7}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #e7e7e7;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:6px;margin-bottom:6px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:6px;margin-bottom:6px}.navbar-btn.btn-sm{margin-top:11px;margin-bottom:11px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#333333}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#333333;background-color:transparent}.navbar-default .navbar-text{color:#555555}.navbar-default .navbar-nav>li>a{color:#999999}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#333333;background-color:transparent}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#eeeeee;background-color:transparent}.navbar-default .navbar-toggle{border-color:#eeeeee}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ffffff}.navbar-default .navbar-toggle .icon-bar{background-color:#999999}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:transparent;color:#333333}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#999999}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#333333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#eeeeee;background-color:transparent}}.navbar-default .navbar-link{color:#999999}.navbar-default .navbar-link:hover{color:#333333}.navbar-default .btn-link{color:#999999}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#eeeeee}.navbar-inverse{background-color:#ffffff;border-color:#e6e6e6}.navbar-inverse .navbar-brand{color:#999999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#333333;background-color:transparent}.navbar-inverse .navbar-text{color:#999999}.navbar-inverse .navbar-nav>li>a{color:#999999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#333333;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#333333;background-color:transparent}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#eeeeee;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#eeeeee}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#eeeeee}.navbar-inverse .navbar-toggle .icon-bar{background-color:#999999}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#ededed}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:transparent;color:#333333}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#e6e6e6}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#e6e6e6}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#333333;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#333333;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#eeeeee;background-color:transparent}}.navbar-inverse .navbar-link{color:#999999}.navbar-inverse .navbar-link:hover{color:#333333}.navbar-inverse .btn-link{color:#999999}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#333333}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#eeeeee}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#fafafa;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:">\00a0";padding:0 5px;color:#999999}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:7px 12px;line-height:1.42857143;text-decoration:none;color:#555555;background-color:#eeeeee;border:1px solid #e2e2e2;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#555555;background-color:#eeeeee;border-color:#e2e2e2}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#ffffff;background-color:#158cba;border-color:#127ba3;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#eeeeee;border-color:#e2e2e2;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:13px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:5px;border-top-left-radius:5px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:5px;border-top-right-radius:5px}.pagination-sm>li>a,.pagination-sm>li>span{padding:4px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:2px;border-top-left-radius:2px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:2px;border-top-right-radius:2px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#eeeeee;border:1px solid #e2e2e2;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.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:#999999;background-color:#eeeeee;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#158cba}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#106a8c}.label-success{background-color:#28b62c}.label-success[href]:hover,.label-success[href]:focus{background-color:#1f8c22}.label-info{background-color:#75caeb}.label-info[href]:hover,.label-info[href]:focus{background-color:#48b9e5}.label-warning{background-color:#ff851b}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#e76b00}.label-danger{background-color:#ff4136}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#ff1103}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:normal;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#158cba;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#158cba;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#fafafa}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#e1e1e1}.container .jumbotron,.container-fluid .jumbotron{border-radius:5px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#ffffff;border:1px solid #eeeeee;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#158cba}.thumbnail .caption{padding:9px;color:#555555}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#28b62c;border-color:#24a528;color:#ffffff}.alert-success hr{border-top-color:#209023}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#75caeb;border-color:#40b5e3;color:#ffffff}.alert-info hr{border-top-color:#29ade0}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff851b;border-color:#ff7701;color:#ffffff}.alert-warning hr{border-top-color:#e76b00}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#ff4136;border-color:#ff1103;color:#ffffff}.alert-danger hr{border-top-color:#e90d00}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 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:#fafafa;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#158cba;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#28b62c}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#75caeb}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#ff851b}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#ff4136}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#158cba;border-color:#158cba}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#a6dff5}.list-group-item-success{color:#ffffff;background-color:#28b62c}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#23a127}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#75caeb}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#5fc1e8}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#ff851b}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#ff7701}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#ff4136}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#ff291c}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid transparent;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid transparent}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid transparent}.panel-default{border-color:transparent}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:transparent}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-primary{border-color:transparent}.panel-primary>.panel-heading{color:#ffffff;background-color:#158cba;border-color:transparent}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-primary>.panel-heading .badge{color:#158cba;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-success{border-color:transparent}.panel-success>.panel-heading{color:#ffffff;background-color:#28b62c;border-color:transparent}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-success>.panel-heading .badge{color:#28b62c;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-info{border-color:transparent}.panel-info>.panel-heading{color:#ffffff;background-color:#75caeb;border-color:transparent}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-info>.panel-heading .badge{color:#75caeb;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-warning{border-color:transparent}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff851b;border-color:transparent}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-warning>.panel-heading .badge{color:#ff851b;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-danger{border-color:transparent}.panel-danger>.panel-heading{color:#ffffff;background-color:#ff4136;border-color:transparent}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-danger>.panel-heading .badge{color:#ff4136;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#fafafa;border:1px solid #e8e8e8;border-radius:4px;-webkit-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-lg{padding:24px;border-radius:5px}.well-sm{padding:9px;border-radius:2px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:5px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Source Sans Pro","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#000000;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:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Source Sans Pro","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.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:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border-width:0 1px 4px 1px}.btn{padding:9px 12px 7px;border-width:0 1px 4px 1px;font-size:12px;font-weight:bold;text-transform:uppercase}.btn:hover{margin-top:1px;border-bottom-width:3px}.btn:active{margin-top:2px;border-bottom-width:2px;-webkit-box-shadow:none;box-shadow:none}.btn-lg,.btn-group-lg>.btn{padding:15px 16px 13px;line-height:15px}.btn-sm,.btn-group-sm>.btn{padding:6px 10px 4px}.btn-xs,.btn-group-xs>.btn{padding:3px 5px 1px}.btn-default:hover,.btn-default:focus,.btn-group.open .dropdown-toggle.btn-default{background-color:#eeeeee;border-color:#e2e2e2}.btn-primary:hover,.btn-primary:focus,.btn-group.open .dropdown-toggle.btn-primary{background-color:#158cba;border-color:#127ba3}.btn-success:hover,.btn-success:focus,.btn-group.open .dropdown-toggle.btn-success{background-color:#28b62c;border-color:#23a127}.btn-info:hover,.btn-info:focus,.btn-group.open .dropdown-toggle.btn-info{background-color:#75caeb;border-color:#5fc1e8}.btn-warning:hover,.btn-warning:focus,.btn-group.open .dropdown-toggle.btn-warning{background-color:#ff851b;border-color:#ff7701}.btn-danger:hover,.btn-danger:focus,.btn-group.open .dropdown-toggle.btn-danger{background-color:#ff4136;border-color:#ff291c}.btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.navbar-btn:hover{margin-top:8px}.navbar-btn:active{margin-top:9px}.navbar-btn.btn-sm:hover{margin-top:11px}.navbar-btn.btn-sm:active{margin-top:12px}.navbar-btn.btn-xs:hover{margin-top:15px}.navbar-btn.btn-xs:active{margin-top:16px}.btn-group-vertical .btn+.btn:hover{border-top-width:1px}.btn-group-vertical .btn+.btn:active{border-top-width:2px}.text-primary,.text-primary:hover{color:#158cba}.text-success,.text-success:hover{color:#28b62c}.text-danger,.text-danger:hover{color:#ff4136}.text-warning,.text-warning:hover{color:#ff851b}.text-info,.text-info:hover{color:#75caeb}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success a:not(.btn),.table .success a:not(.btn),table .warning a:not(.btn),.table .warning a:not(.btn),table .danger a:not(.btn),.table .danger a:not(.btn),table .info a:not(.btn),.table .info a:not(.btn){color:#fff}table>thead>tr>th,.table>thead>tr>th,table>tbody>tr>th,.table>tbody>tr>th,table>tfoot>tr>th,.table>tfoot>tr>th,table>thead>tr>td,.table>thead>tr>td,table>tbody>tr>td,.table>tbody>tr>td,table>tfoot>tr>td,.table>tfoot>tr>td{border-color:transparent}.form-control{-webkit-box-shadow:inset 0 2px 0 rgba(0,0,0,0.075);box-shadow:inset 0 2px 0 rgba(0,0,0,0.075)}label{font-weight:normal}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#ff851b}.has-warning .form-control,.has-warning .form-control:focus{border:1px solid #ff851b;-webkit-box-shadow:inset 0 2px 0 rgba(0,0,0,0.075);box-shadow:inset 0 2px 0 rgba(0,0,0,0.075)}.has-warning .input-group-addon{border:1px solid #ff851b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#ff4136}.has-error .form-control,.has-error .form-control:focus{border:1px solid #ff4136;-webkit-box-shadow:inset 0 2px 0 rgba(0,0,0,0.075);box-shadow:inset 0 2px 0 rgba(0,0,0,0.075)}.has-error .input-group-addon{border:1px solid #ff4136}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#28b62c}.has-success .form-control,.has-success .form-control:focus{border:1px solid #28b62c;-webkit-box-shadow:inset 0 2px 0 rgba(0,0,0,0.075);box-shadow:inset 0 2px 0 rgba(0,0,0,0.075)}.has-success .input-group-addon{border:1px solid #28b62c}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:transparent}.nav-tabs>li>a{margin-top:6px;border-color:#e7e7e7;color:#333333;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus,.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus,.nav-tabs .open>a,.nav-tabs .open>a:hover,.nav-tabs .open>a:focus{padding-bottom:16px;margin-top:0}.nav-tabs .open>a,.nav-tabs .open>a:hover,.nav-tabs .open>a:focus{border-color:#e7e7e7}.nav-tabs>li.disabled>a:hover,.nav-tabs>li.disabled>a:focus{padding-top:10px;padding-bottom:10px;margin-top:6px}.nav-tabs.nav-justified>li{vertical-align:bottom}.dropdown-menu{margin-top:0;border-width:0 1px 4px 1px;border-top-width:1px;-webkit-box-shadow:none;box-shadow:none}.breadcrumb{border-color:#ededed;border-style:solid;border-width:0 1px 4px 1px}.pagination>li>a,.pager>li>a,.pagination>li>span,.pager>li>span{position:relative;top:0;border-width:0 1px 4px 1px;color:#555555;font-size:12px;font-weight:bold;text-transform:uppercase}.pagination>li>a:hover,.pager>li>a:hover,.pagination>li>span:hover,.pager>li>span:hover{top:1px;border-bottom-width:3px}.pagination>li>a:active,.pager>li>a:active,.pagination>li>span:active,.pager>li>span:active{top:2px;border-bottom-width:2px}.pagination>.disabled>a:hover,.pager>.disabled>a:hover,.pagination>.disabled>span:hover,.pager>.disabled>span:hover{top:0;border-width:0 1px 4px 1px}.pagination>.disabled>a:active,.pager>.disabled>a:active,.pagination>.disabled>span:active,.pager>.disabled>span:active{top:0;border-width:0 1px 4px 1px}.pager>li>a,.pager>li>span,.pager>.disabled>a,.pager>.disabled>span,.pager>li>a:hover,.pager>li>span:hover,.pager>.disabled>a:hover,.pager>.disabled>span:hover,.pager>li>a:active,.pager>li>span:active,.pager>.disabled>a:active,.pager>.disabled>span:active{border-left-width:2px;border-right-width:2px}.close{color:#fff;text-decoration:none;opacity:0.4}.close:hover,.close:focus{color:#fff;opacity:1}.alert{border-width:0 1px 4px 1px}.alert .alert-link{font-weight:normal;color:#fff;text-decoration:underline}.label{font-weight:normal}.progress{border:1px solid #e7e7e7;-webkit-box-shadow:inset 0 2px 0 rgba(0,0,0,0.1);box-shadow:inset 0 2px 0 rgba(0,0,0,0.1)}.progress-bar{-webkit-box-shadow:inset 0 -4px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -4px 0 rgba(0,0,0,0.15)}.well{border:1px solid #e7e7e7;-webkit-box-shadow:inset 0 2px 0 rgba(0,0,0,0.05);box-shadow:inset 0 2px 0 rgba(0,0,0,0.05)}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border-color:#dddddd}a.list-group-item-success.active{background-color:#28b62c}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#23a127}a.list-group-item-warning.active{background-color:#ff851b}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#ff7701}a.list-group-item-danger.active{background-color:#ff4136}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#ff291c}.jumbotron{border:1px solid #e7e7e7;-webkit-box-shadow:inset 0 2px 0 rgba(0,0,0,0.05);box-shadow:inset 0 2px 0 rgba(0,0,0,0.05)}.panel{border:1px solid #e7e7e7;border-width:0 1px 4px 1px}.panel-default .close{color:#555555}.modal .close{color:#555555}.popover{color:#555555} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/paper/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/paper/bootstrap.min.css deleted file mode 100644 index 85fffdd95d..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/paper/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Roboto:300,400,500,700");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:1.846;color:#666666;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2196f3;text-decoration:none}a:hover,a:focus{color:#0a6ebd;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:3px}.img-thumbnail{padding:4px;line-height:1.846;background-color:#ffffff;border:1px solid #dddddd;border-radius:3px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:23px;margin-bottom:23px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.1;color:#444444}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#bbbbbb}h1,.h1,h2,.h2,h3,.h3{margin-top:23px;margin-bottom:11.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:11.5px;margin-bottom:11.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:56px}h2,.h2{font-size:45px}h3,.h3{font-size:34px}h4,.h4{font-size:24px}h5,.h5{font-size:20px}h6,.h6{font-size:14px}p{margin:0 0 11.5px}.lead{margin-bottom:23px;font-size:14px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}small,.small{font-size:92%}mark,.mark{background-color:#ffe0b2;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#bbbbbb}.text-primary{color:#2196f3}a.text-primary:hover,a.text-primary:focus{color:#0c7cd5}.text-success{color:#4caf50}a.text-success:hover,a.text-success:focus{color:#3d8b40}.text-info{color:#9c27b0}a.text-info:hover,a.text-info:focus{color:#771e86}.text-warning{color:#ff9800}a.text-warning:hover,a.text-warning:focus{color:#cc7a00}.text-danger{color:#e51c23}a.text-danger:hover,a.text-danger:focus{color:#b9151b}.bg-primary{color:#fff;background-color:#2196f3}a.bg-primary:hover,a.bg-primary:focus{background-color:#0c7cd5}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#e1bee7}a.bg-info:hover,a.bg-info:focus{background-color:#d099d9}.bg-warning{background-color:#ffe0b2}a.bg-warning:hover,a.bg-warning:focus{background-color:#ffcb7f}.bg-danger{background-color:#f9bdbb}a.bg-danger:hover,a.bg-danger:focus{background-color:#f5908c}.page-header{padding-bottom:10.5px;margin:46px 0 23px;border-bottom:1px solid #eeeeee}ul,ol{margin-top:0;margin-bottom:11.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:23px}dt,dd{line-height:1.846}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #bbbbbb}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:11.5px 23px;margin:0 0 23px;font-size:16.25px;border-left:5px solid #eeeeee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.846;color:#bbbbbb}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:23px;font-style:normal;line-height:1.846}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:3px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:11px;margin:0 0 11.5px;font-size:12px;line-height:1.846;word-break:break-all;word-wrap:break-word;color:#212121;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:3px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#bbbbbb;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:23px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.846;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#e1bee7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#d8abe0}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ffe0b2}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#ffd699}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f9bdbb}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#f7a6a4}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:17.25px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:23px;font-size:19.5px;line-height:inherit;color:#212121;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:13px;line-height:1.846;color:#666666}.form-control{display:block;width:100%;height:37px;padding:6px 16px;font-size:13px;line-height:1.846;color:#666666;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#bbbbbb;opacity:1}.form-control:-ms-input-placeholder{color:#bbbbbb}.form-control::-webkit-input-placeholder{color:#bbbbbb}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:transparent;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:37px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:45px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:23px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:35px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}select.input-lg{height:45px;line-height:45px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}.form-group-lg select.form-control{height:45px;line-height:45px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:45px;min-height:40px;padding:11px 16px;font-size:17px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:46.25px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:37px;height:37px;line-height:37px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:45px;height:45px;line-height:45px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#4caf50}.has-success .form-control{border-color:#4caf50;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#3d8b40;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #92cf94;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #92cf94}.has-success .input-group-addon{color:#4caf50;border-color:#4caf50;background-color:#dff0d8}.has-success .form-control-feedback{color:#4caf50}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ff9800}.has-warning .form-control{border-color:#ff9800;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#cc7a00;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ffc166;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ffc166}.has-warning .input-group-addon{color:#ff9800;border-color:#ff9800;background-color:#ffe0b2}.has-warning .form-control-feedback{color:#ff9800}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#e51c23}.has-error .form-control{border-color:#e51c23;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#b9151b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ef787c;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ef787c}.has-error .input-group-addon{color:#e51c23;border-color:#e51c23;background-color:#f9bdbb}.has-error .form-control-feedback{color:#e51c23}.has-feedback label~.form-control-feedback{top:28px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#a6a6a6}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:30px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.333333px;font-size:17px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 16px;font-size:13px;line-height:1.846;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#444444;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#444444;background-color:#ffffff;border-color:transparent}.btn-default:focus,.btn-default.focus{color:#444444;background-color:#e6e6e6;border-color:rgba(0,0,0,0)}.btn-default:hover{color:#444444;background-color:#e6e6e6;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#444444;background-color:#e6e6e6;border-color:rgba(0,0,0,0)}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#444444;background-color:#d4d4d4;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#ffffff;border-color:transparent}.btn-default .badge{color:#ffffff;background-color:#444444}.btn-primary{color:#ffffff;background-color:#2196f3;border-color:transparent}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#0c7cd5;border-color:rgba(0,0,0,0)}.btn-primary:hover{color:#ffffff;background-color:#0c7cd5;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#0c7cd5;border-color:rgba(0,0,0,0)}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#0a68b4;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#2196f3;border-color:transparent}.btn-primary .badge{color:#2196f3;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#4caf50;border-color:transparent}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#3d8b40;border-color:rgba(0,0,0,0)}.btn-success:hover{color:#ffffff;background-color:#3d8b40;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#3d8b40;border-color:rgba(0,0,0,0)}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#327334;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#4caf50;border-color:transparent}.btn-success .badge{color:#4caf50;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9c27b0;border-color:transparent}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#771e86;border-color:rgba(0,0,0,0)}.btn-info:hover{color:#ffffff;background-color:#771e86;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#771e86;border-color:rgba(0,0,0,0)}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#5d1769;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#9c27b0;border-color:transparent}.btn-info .badge{color:#9c27b0;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff9800;border-color:transparent}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#cc7a00;border-color:rgba(0,0,0,0)}.btn-warning:hover{color:#ffffff;background-color:#cc7a00;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#cc7a00;border-color:rgba(0,0,0,0)}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#a86400;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#ff9800;border-color:transparent}.btn-warning .badge{color:#ff9800;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#e51c23;border-color:transparent}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#b9151b;border-color:rgba(0,0,0,0)}.btn-danger:hover{color:#ffffff;background-color:#b9151b;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#b9151b;border-color:rgba(0,0,0,0)}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#991216;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#e51c23;border-color:transparent}.btn-danger .badge{color:#e51c23;background-color:#ffffff}.btn-link{color:#2196f3;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#0a6ebd;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#bbbbbb;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:13px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:3px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:10.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.846;color:#666666;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#141414;background-color:#eeeeee}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2196f3}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#bbbbbb}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.846;color:#bbbbbb;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 16px;font-size:13px;font-weight:normal;line-height:1;color:#666666;text-align:center;background-color:transparent;border:1px solid transparent;border-radius:3px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:17px;border-radius:3px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#bbbbbb}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#bbbbbb;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#2196f3}.nav .nav-divider{height:1px;margin:10.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid transparent}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.846;border:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee transparent}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#666666;background-color:transparent;border:1px solid transparent;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid transparent}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:3px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2196f3}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid transparent}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:64px;margin-bottom:23px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:3px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:20.5px 15px;font-size:17px;line-height:23px;height:64px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:15px;margin-bottom:15px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:10.25px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:23px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:23px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:20.5px;padding-bottom:20.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:13.5px;margin-bottom:13.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:13.5px;margin-bottom:13.5px}.navbar-btn.btn-sm{margin-top:17px;margin-bottom:17px}.navbar-btn.btn-xs{margin-top:21px;margin-bottom:21px}.navbar-text{margin-top:20.5px;margin-bottom:20.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#ffffff;border-color:transparent}.navbar-default .navbar-brand{color:#666666}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#212121;background-color:transparent}.navbar-default .navbar-text{color:#bbbbbb}.navbar-default .navbar-nav>li>a{color:#666666}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#212121;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#212121;background-color:#eeeeee}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:transparent}.navbar-default .navbar-toggle .icon-bar{background-color:rgba(0,0,0,0.5)}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#eeeeee;color:#212121}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#666666}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#212121;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#212121;background-color:#eeeeee}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#666666}.navbar-default .navbar-link:hover{color:#212121}.navbar-default .btn-link{color:#666666}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#212121}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#2196f3;border-color:transparent}.navbar-inverse .navbar-brand{color:#b2dbfb}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#bbbbbb}.navbar-inverse .navbar-nav>li>a{color:#b2dbfb}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#0c7cd5}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:transparent}.navbar-inverse .navbar-toggle .icon-bar{background-color:rgba(0,0,0,0.5)}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#0c84e4}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#0c7cd5;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#b2dbfb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#0c7cd5}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#b2dbfb}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#b2dbfb}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:23px;list-style:none;background-color:#f5f5f5;border-radius:3px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#bbbbbb}.pagination{display:inline-block;padding-left:0;margin:23px 0;border-radius:3px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 16px;line-height:1.846;text-decoration:none;color:#2196f3;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#0a6ebd;background-color:#eeeeee;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#ffffff;background-color:#2196f3;border-color:#2196f3;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#bbbbbb;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:17px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:23px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.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:#bbbbbb;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#bbbbbb}.label-default[href]:hover,.label-default[href]:focus{background-color:#a2a2a2}.label-primary{background-color:#2196f3}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#0c7cd5}.label-success{background-color:#4caf50}.label-success[href]:hover,.label-success[href]:focus{background-color:#3d8b40}.label-info{background-color:#9c27b0}.label-info[href]:hover,.label-info[href]:focus{background-color:#771e86}.label-warning{background-color:#ff9800}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#cc7a00}.label-danger{background-color:#e51c23}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#b9151b}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:normal;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#bbbbbb;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2196f3;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#f9f9f9}.jumbotron h1,.jumbotron .h1{color:#444444}.jumbotron p{margin-bottom:15px;font-size:20px;font-weight:200}.jumbotron>hr{border-top-color:#e0e0e0}.container .jumbotron,.container-fluid .jumbotron{border-radius:3px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:59px}}.thumbnail{display:block;padding:4px;margin-bottom:23px;line-height:1.846;background-color:#ffffff;border:1px solid #dddddd;border-radius:3px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2196f3}.thumbnail .caption{padding:9px;color:#666666}.alert{padding:15px;margin-bottom:23px;border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#4caf50}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#3d8b40}.alert-info{background-color:#e1bee7;border-color:#cba4dd;color:#9c27b0}.alert-info hr{border-top-color:#c191d6}.alert-info .alert-link{color:#771e86}.alert-warning{background-color:#ffe0b2;border-color:#ffc599;color:#ff9800}.alert-warning hr{border-top-color:#ffb67f}.alert-warning .alert-link{color:#cc7a00}.alert-danger{background-color:#f9bdbb;border-color:#f7a4af;color:#e51c23}.alert-danger hr{border-top-color:#f58c9a}.alert-danger .alert-link{color:#b9151b}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:23px;margin-bottom:23px;background-color:#f5f5f5;border-radius:3px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:23px;color:#ffffff;text-align:center;background-color:#2196f3;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#4caf50}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#9c27b0}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#ff9800}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#e51c23}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#bbbbbb;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#bbbbbb}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2196f3;border-color:#2196f3}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e3f2fd}.list-group-item-success{color:#4caf50;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#4caf50}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#4caf50;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#4caf50;border-color:#4caf50}.list-group-item-info{color:#9c27b0;background-color:#e1bee7}a.list-group-item-info,button.list-group-item-info{color:#9c27b0}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#9c27b0;background-color:#d8abe0}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#9c27b0;border-color:#9c27b0}.list-group-item-warning{color:#ff9800;background-color:#ffe0b2}a.list-group-item-warning,button.list-group-item-warning{color:#ff9800}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ff9800;background-color:#ffd699}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ff9800;border-color:#ff9800}.list-group-item-danger{color:#e51c23;background-color:#f9bdbb}a.list-group-item-danger,button.list-group-item-danger{color:#e51c23}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#e51c23;background-color:#f7a6a4}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#e51c23;border-color:#e51c23}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:23px;background-color:#ffffff;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:15px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:2px;border-top-left-radius:2px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:2px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:2px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:2px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:2px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:23px}.panel-group .panel{margin-bottom:0;border-radius:3px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#212121;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#212121}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#2196f3}.panel-primary>.panel-heading{color:#ffffff;background-color:#2196f3;border-color:#2196f3}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2196f3}.panel-primary>.panel-heading .badge{color:#2196f3;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2196f3}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#ffffff;background-color:#4caf50;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#4caf50;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#cba4dd}.panel-info>.panel-heading{color:#ffffff;background-color:#9c27b0;border-color:#cba4dd}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#cba4dd}.panel-info>.panel-heading .badge{color:#9c27b0;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#cba4dd}.panel-warning{border-color:#ffc599}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff9800;border-color:#ffc599}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ffc599}.panel-warning>.panel-heading .badge{color:#ff9800;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ffc599}.panel-danger{border-color:#f7a4af}.panel-danger>.panel-heading{color:#ffffff;background-color:#e51c23;border-color:#f7a4af}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f7a4af}.panel-danger>.panel-heading .badge{color:#e51c23;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f7a4af}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f9f9f9;border:1px solid transparent;border-radius:3px;-webkit-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-lg{padding:24px;border-radius:3px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:19.5px;font-weight:normal;line-height:1;color:#000000;text-shadow:none;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid transparent;min-height:16.846px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.846}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid transparent}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.846;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#727272;border-radius:3px}.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:#727272}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#727272}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#727272}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#727272}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#727272}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#727272}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#727272}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#727272}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.846;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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:13px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:2px 2px 0 0}.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:rgba(0,0,0,0);border-top-color:rgba(0,0,0,0.075);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:rgba(0,0,0,0);border-right-color:rgba(0,0,0,0.075)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,0);border-bottom-color:rgba(0,0,0,0.075);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,0);border-left-color:rgba(0,0,0,0.075)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border:none;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.3);box-shadow:0 1px 2px rgba(0,0,0,0.3)}.navbar-brand{font-size:24px}.navbar-inverse .form-control{color:#fff}.navbar-inverse .form-control::-moz-placeholder{color:#b2dbfb;opacity:1}.navbar-inverse .form-control:-ms-input-placeholder{color:#b2dbfb}.navbar-inverse .form-control::-webkit-input-placeholder{color:#b2dbfb}.navbar-inverse .form-control[type=text],.navbar-inverse .form-control[type=password]{-webkit-box-shadow:inset 0 -1px 0 #b2dbfb;box-shadow:inset 0 -1px 0 #b2dbfb}.navbar-inverse .form-control[type=text]:focus,.navbar-inverse .form-control[type=password]:focus{-webkit-box-shadow:inset 0 -2px 0 #fff;box-shadow:inset 0 -2px 0 #fff}.btn-default{-webkit-background-size:200% 200%;background-size:200%;background-position:50%}.btn-default:focus{background-color:#ffffff}.btn-default:hover,.btn-default:active:hover{background-color:#f0f0f0}.btn-default:active{background-color:#e0e0e0;background-image:-webkit-radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-image:-o-radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-image:radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-primary{-webkit-background-size:200% 200%;background-size:200%;background-position:50%}.btn-primary:focus{background-color:#2196f3}.btn-primary:hover,.btn-primary:active:hover{background-color:#0d87e9}.btn-primary:active{background-color:#0b76cc;background-image:-webkit-radial-gradient(circle, #0b76cc 10%, #2196f3 11%);background-image:-o-radial-gradient(circle, #0b76cc 10%, #2196f3 11%);background-image:radial-gradient(circle, #0b76cc 10%, #2196f3 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-success{-webkit-background-size:200% 200%;background-size:200%;background-position:50%}.btn-success:focus{background-color:#4caf50}.btn-success:hover,.btn-success:active:hover{background-color:#439a46}.btn-success:active{background-color:#39843c;background-image:-webkit-radial-gradient(circle, #39843c 10%, #4caf50 11%);background-image:-o-radial-gradient(circle, #39843c 10%, #4caf50 11%);background-image:radial-gradient(circle, #39843c 10%, #4caf50 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-info{-webkit-background-size:200% 200%;background-size:200%;background-position:50%}.btn-info:focus{background-color:#9c27b0}.btn-info:hover,.btn-info:active:hover{background-color:#862197}.btn-info:active{background-color:#701c7e;background-image:-webkit-radial-gradient(circle, #701c7e 10%, #9c27b0 11%);background-image:-o-radial-gradient(circle, #701c7e 10%, #9c27b0 11%);background-image:radial-gradient(circle, #701c7e 10%, #9c27b0 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-warning{-webkit-background-size:200% 200%;background-size:200%;background-position:50%}.btn-warning:focus{background-color:#ff9800}.btn-warning:hover,.btn-warning:active:hover{background-color:#e08600}.btn-warning:active{background-color:#c27400;background-image:-webkit-radial-gradient(circle, #c27400 10%, #ff9800 11%);background-image:-o-radial-gradient(circle, #c27400 10%, #ff9800 11%);background-image:radial-gradient(circle, #c27400 10%, #ff9800 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-danger{-webkit-background-size:200% 200%;background-size:200%;background-position:50%}.btn-danger:focus{background-color:#e51c23}.btn-danger:hover,.btn-danger:active:hover{background-color:#cb171e}.btn-danger:active{background-color:#b0141a;background-image:-webkit-radial-gradient(circle, #b0141a 10%, #e51c23 11%);background-image:-o-radial-gradient(circle, #b0141a 10%, #e51c23 11%);background-image:radial-gradient(circle, #b0141a 10%, #e51c23 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-link{-webkit-background-size:200% 200%;background-size:200%;background-position:50%}.btn-link:focus{background-color:#ffffff}.btn-link:hover,.btn-link:active:hover{background-color:#f0f0f0}.btn-link:active{background-color:#e0e0e0;background-image:-webkit-radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-image:-o-radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-image:radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn{text-transform:uppercase;border:none;-webkit-box-shadow:1px 1px 4px rgba(0,0,0,0.4);box-shadow:1px 1px 4px rgba(0,0,0,0.4);-webkit-transition:all 0.4s;-o-transition:all 0.4s;transition:all 0.4s}.btn-link{border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#444444}.btn-link:hover,.btn-link:focus{-webkit-box-shadow:none;box-shadow:none;color:#444444;text-decoration:none}.btn-default.disabled{background-color:rgba(0,0,0,0.1);color:rgba(0,0,0,0.4);opacity:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:0}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:0}body{-webkit-font-smoothing:antialiased;letter-spacing:.1px}p{margin:0 0 1em}input,button{-webkit-font-smoothing:antialiased;letter-spacing:.1px}a{-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s}.table-hover>tbody>tr,.table-hover>tbody>tr>th,.table-hover>tbody>tr>td{-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s}label{font-weight:normal}textarea,textarea.form-control,input.form-control,input[type=text],input[type=password],input[type=email],input[type=number],[type=text].form-control,[type=password].form-control,[type=email].form-control,[type=tel].form-control,[contenteditable].form-control{padding:0;border:none;border-radius:0;-webkit-appearance:none;-webkit-box-shadow:inset 0 -1px 0 #ddd;box-shadow:inset 0 -1px 0 #ddd;font-size:16px}textarea:focus,textarea.form-control:focus,input.form-control:focus,input[type=text]:focus,input[type=password]:focus,input[type=email]:focus,input[type=number]:focus,[type=text].form-control:focus,[type=password].form-control:focus,[type=email].form-control:focus,[type=tel].form-control:focus,[contenteditable].form-control:focus{-webkit-box-shadow:inset 0 -2px 0 #2196f3;box-shadow:inset 0 -2px 0 #2196f3}textarea[disabled],textarea.form-control[disabled],input.form-control[disabled],input[type=text][disabled],input[type=password][disabled],input[type=email][disabled],input[type=number][disabled],[type=text].form-control[disabled],[type=password].form-control[disabled],[type=email].form-control[disabled],[type=tel].form-control[disabled],[contenteditable].form-control[disabled],textarea[readonly],textarea.form-control[readonly],input.form-control[readonly],input[type=text][readonly],input[type=password][readonly],input[type=email][readonly],input[type=number][readonly],[type=text].form-control[readonly],[type=password].form-control[readonly],[type=email].form-control[readonly],[type=tel].form-control[readonly],[contenteditable].form-control[readonly]{-webkit-box-shadow:none;box-shadow:none;border-bottom:1px dotted #ddd}textarea.input-sm,textarea.form-control.input-sm,input.form-control.input-sm,input[type=text].input-sm,input[type=password].input-sm,input[type=email].input-sm,input[type=number].input-sm,[type=text].form-control.input-sm,[type=password].form-control.input-sm,[type=email].form-control.input-sm,[type=tel].form-control.input-sm,[contenteditable].form-control.input-sm{font-size:12px}textarea.input-lg,textarea.form-control.input-lg,input.form-control.input-lg,input[type=text].input-lg,input[type=password].input-lg,input[type=email].input-lg,input[type=number].input-lg,[type=text].form-control.input-lg,[type=password].form-control.input-lg,[type=email].form-control.input-lg,[type=tel].form-control.input-lg,[contenteditable].form-control.input-lg{font-size:17px}select,select.form-control{border:0;border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-left:0;padding-right:0\9;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEVmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmaP/QSjAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=);-webkit-background-size:13px 13px;background-size:13px;background-repeat:no-repeat;background-position:right center;-webkit-box-shadow:inset 0 -1px 0 #ddd;box-shadow:inset 0 -1px 0 #ddd;font-size:16px;line-height:1.5}select::-ms-expand,select.form-control::-ms-expand{display:none}select.input-sm,select.form-control.input-sm{font-size:12px}select.input-lg,select.form-control.input-lg{font-size:17px}select:focus,select.form-control:focus{-webkit-box-shadow:inset 0 -2px 0 #2196f3;box-shadow:inset 0 -2px 0 #2196f3;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEUhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF8S9ewAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=)}select[multiple],select.form-control[multiple]{background:none}.radio label,.radio-inline label,.checkbox label,.checkbox-inline label{padding-left:25px}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="radio"],.checkbox-inline input[type="radio"],.radio input[type="checkbox"],.radio-inline input[type="checkbox"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{margin-left:-25px}input[type="radio"],.radio input[type="radio"],.radio-inline input[type="radio"]{position:relative;margin-top:6px;margin-right:4px;vertical-align:top;border:none;background-color:transparent;-webkit-appearance:none;appearance:none;cursor:pointer}input[type="radio"]:focus,.radio input[type="radio"]:focus,.radio-inline input[type="radio"]:focus{outline:none}input[type="radio"]:before,.radio input[type="radio"]:before,.radio-inline input[type="radio"]:before,input[type="radio"]:after,.radio input[type="radio"]:after,.radio-inline input[type="radio"]:after{content:"";display:block;width:18px;height:18px;border-radius:50%;-webkit-transition:240ms;-o-transition:240ms;transition:240ms}input[type="radio"]:before,.radio input[type="radio"]:before,.radio-inline input[type="radio"]:before{position:absolute;left:0;top:-3px;background-color:#2196f3;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}input[type="radio"]:after,.radio input[type="radio"]:after,.radio-inline input[type="radio"]:after{position:relative;top:-3px;border:2px solid #666666}input[type="radio"]:checked:before,.radio input[type="radio"]:checked:before,.radio-inline input[type="radio"]:checked:before{-webkit-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}input[type="radio"]:disabled:checked:before,.radio input[type="radio"]:disabled:checked:before,.radio-inline input[type="radio"]:disabled:checked:before{background-color:#bbbbbb}input[type="radio"]:checked:after,.radio input[type="radio"]:checked:after,.radio-inline input[type="radio"]:checked:after{border-color:#2196f3}input[type="radio"]:disabled:after,.radio input[type="radio"]:disabled:after,.radio-inline input[type="radio"]:disabled:after,input[type="radio"]:disabled:checked:after,.radio input[type="radio"]:disabled:checked:after,.radio-inline input[type="radio"]:disabled:checked:after{border-color:#bbbbbb}input[type="checkbox"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:relative;border:none;margin-bottom:-4px;-webkit-appearance:none;appearance:none;cursor:pointer}input[type="checkbox"]:focus,.checkbox input[type="checkbox"]:focus,.checkbox-inline input[type="checkbox"]:focus{outline:none}input[type="checkbox"]:focus:after,.checkbox input[type="checkbox"]:focus:after,.checkbox-inline input[type="checkbox"]:focus:after{border-color:#2196f3}input[type="checkbox"]:after,.checkbox input[type="checkbox"]:after,.checkbox-inline input[type="checkbox"]:after{content:"";display:block;width:18px;height:18px;margin-top:-2px;margin-right:5px;border:2px solid #666666;border-radius:2px;-webkit-transition:240ms;-o-transition:240ms;transition:240ms}input[type="checkbox"]:checked:before,.checkbox input[type="checkbox"]:checked:before,.checkbox-inline input[type="checkbox"]:checked:before{content:"";position:absolute;top:0;left:6px;display:table;width:6px;height:12px;border:2px solid #fff;border-top-width:0;border-left-width:0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}input[type="checkbox"]:checked:after,.checkbox input[type="checkbox"]:checked:after,.checkbox-inline input[type="checkbox"]:checked:after{background-color:#2196f3;border-color:#2196f3}input[type="checkbox"]:disabled:after,.checkbox input[type="checkbox"]:disabled:after,.checkbox-inline input[type="checkbox"]:disabled:after{border-color:#bbbbbb}input[type="checkbox"]:disabled:checked:after,.checkbox input[type="checkbox"]:disabled:checked:after,.checkbox-inline input[type="checkbox"]:disabled:checked:after{background-color:#bbbbbb;border-color:transparent}.has-warning input:not([type=checkbox]),.has-warning .form-control,.has-warning input.form-control[readonly],.has-warning input[type=text][readonly],.has-warning [type=text].form-control[readonly],.has-warning input:not([type=checkbox]):focus,.has-warning .form-control:focus{border-bottom:none;-webkit-box-shadow:inset 0 -2px 0 #ff9800;box-shadow:inset 0 -2px 0 #ff9800}.has-error input:not([type=checkbox]),.has-error .form-control,.has-error input.form-control[readonly],.has-error input[type=text][readonly],.has-error [type=text].form-control[readonly],.has-error input:not([type=checkbox]):focus,.has-error .form-control:focus{border-bottom:none;-webkit-box-shadow:inset 0 -2px 0 #e51c23;box-shadow:inset 0 -2px 0 #e51c23}.has-success input:not([type=checkbox]),.has-success .form-control,.has-success input.form-control[readonly],.has-success input[type=text][readonly],.has-success [type=text].form-control[readonly],.has-success input:not([type=checkbox]):focus,.has-success .form-control:focus{border-bottom:none;-webkit-box-shadow:inset 0 -2px 0 #4caf50;box-shadow:inset 0 -2px 0 #4caf50}.has-warning .input-group-addon,.has-error .input-group-addon,.has-success .input-group-addon{color:#666666;border-color:transparent;background-color:transparent}.nav-tabs>li>a,.nav-tabs>li>a:focus{margin-right:0;background-color:transparent;border:none;color:#666666;-webkit-box-shadow:inset 0 -1px 0 #ddd;box-shadow:inset 0 -1px 0 #ddd;-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus:hover{background-color:transparent;-webkit-box-shadow:inset 0 -2px 0 #2196f3;box-shadow:inset 0 -2px 0 #2196f3;color:#2196f3}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus{border:none;-webkit-box-shadow:inset 0 -2px 0 #2196f3;box-shadow:inset 0 -2px 0 #2196f3;color:#2196f3}.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus:hover{border:none;color:#2196f3}.nav-tabs>li.disabled>a{-webkit-box-shadow:inset 0 -1px 0 #ddd;box-shadow:inset 0 -1px 0 #ddd}.nav-tabs.nav-justified>li>a,.nav-tabs.nav-justified>li>a:hover,.nav-tabs.nav-justified>li>a:focus,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:none}.nav-tabs .dropdown-menu{margin-top:0}.dropdown-menu{margin-top:0;border:none;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.3);box-shadow:0 1px 4px rgba(0,0,0,0.3)}.alert{border:none;color:#fff}.alert-success{background-color:#4caf50}.alert-info{background-color:#9c27b0}.alert-warning{background-color:#ff9800}.alert-danger{background-color:#e51c23}.alert a:not(.close),.alert .alert-link{color:#fff;font-weight:bold}.alert .close{color:#fff}.badge{padding:3px 6px 5px}.progress{position:relative;z-index:1;height:6px;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.progress-bar{-webkit-box-shadow:none;box-shadow:none}.progress-bar:last-child{border-radius:0 3px 3px 0}.progress-bar:last-child:before{display:block;content:"";position:absolute;width:100%;height:100%;left:0;right:0;z-index:-1;background-color:#cae6fc}.progress-bar-success:last-child.progress-bar:before{background-color:#c7e7c8}.progress-bar-info:last-child.progress-bar:before{background-color:#edc9f3}.progress-bar-warning:last-child.progress-bar:before{background-color:#ffe0b3}.progress-bar-danger:last-child.progress-bar:before{background-color:#f28e92}.close{font-size:34px;font-weight:300;line-height:24px;opacity:0.6;-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s}.close:hover{opacity:1}.list-group-item{padding:15px}.list-group-item-text{color:#bbbbbb}.well{border-radius:0;-webkit-box-shadow:none;box-shadow:none}.panel{border:none;border-radius:2px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.3);box-shadow:0 1px 4px rgba(0,0,0,0.3)}.panel-heading{border-bottom:none}.panel-footer{border-top:none}.popover{border:none;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.3);box-shadow:0 1px 4px rgba(0,0,0,0.3)}.carousel-caption h1,.carousel-caption h2,.carousel-caption h3,.carousel-caption h4,.carousel-caption h5,.carousel-caption h6{color:inherit} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/readable/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/readable/bootstrap.min.css deleted file mode 100644 index 3fb40860a3..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/readable/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Raleway:400,700");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:Georgia,"Times New Roman",Times,serif;font-size:16px;line-height:1.42857143;color:#333333;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#4582ec;text-decoration:none}a:hover,a:focus{color:#134fb8;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:22px;margin-bottom:22px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Raleway","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#b3b3b3}h1,.h1,h2,.h2,h3,.h3{margin-top:22px;margin-bottom:11px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:11px;margin-bottom:11px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:41px}h2,.h2{font-size:34px}h3,.h3{font-size:28px}h4,.h4{font-size:20px}h5,.h5{font-size:16px}h6,.h6{font-size:14px}p{margin:0 0 11px}.lead{margin-bottom:22px;font-size:18px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:24px}}small,.small{font-size:87%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#b3b3b3}.text-primary{color:#4582ec}a.text-primary:hover,a.text-primary:focus{color:#1863e6}.text-success{color:#3fad46}a.text-success:hover,a.text-success:focus{color:#318837}.text-info{color:#5bc0de}a.text-info:hover,a.text-info:focus{color:#31b0d5}.text-warning{color:#f0ad4e}a.text-warning:hover,a.text-warning:focus{color:#ec971f}.text-danger{color:#d9534f}a.text-danger:hover,a.text-danger:focus{color:#c9302c}.bg-primary{color:#fff;background-color:#4582ec}a.bg-primary:hover,a.bg-primary:focus{background-color:#1863e6}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:10px;margin:44px 0 22px;border-bottom:1px solid #dddddd}ul,ol{margin-top:0;margin-bottom:11px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:22px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #b3b3b3}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:11px 22px;margin:0 0 22px;font-size:20px;border-left:5px solid #4582ec}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#333333}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #4582ec;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:22px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10.5px;margin:0 0 11px;font-size:15px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#b3b3b3;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:22px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:16.5px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:22px;font-size:24px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:16px;line-height:1.42857143;color:#333333}.form-control{display:block;width:100%;height:40px;padding:8px 12px;font-size:16px;line-height:1.42857143;color:#333333;background-color:#ffffff;background-image:none;border:1px solid #dddddd;border-radius:4px;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#b3b3b3;opacity:1}.form-control:-ms-input-placeholder{color:#b3b3b3}.form-control::-webkit-input-placeholder{color:#b3b3b3}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:40px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:33px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:57px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:22px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:38px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:33px;padding:5px 10px;font-size:14px;line-height:1.5;border-radius:3px}select.input-sm{height:33px;line-height:33px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:33px;padding:5px 10px;font-size:14px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:33px;line-height:33px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:33px;min-height:36px;padding:6px 10px;font-size:14px;line-height:1.5}.input-lg{height:57px;padding:14px 16px;font-size:20px;line-height:1.3333333;border-radius:6px}select.input-lg{height:57px;line-height:57px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:57px;padding:14px 16px;font-size:20px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:57px;line-height:57px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:57px;min-height:42px;padding:15px 16px;font-size:20px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:50px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:40px;height:40px;line-height:40px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:57px;height:57px;line-height:57px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:33px;height:33px;line-height:33px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3fad46}.has-success .form-control{border-color:#3fad46;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#318837;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #81d186;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #81d186}.has-success .input-group-addon{color:#3fad46;border-color:#3fad46;background-color:#dff0d8}.has-success .form-control-feedback{color:#3fad46}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#f0ad4e}.has-warning .form-control{border-color:#f0ad4e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#ec971f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f8d9ac;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f8d9ac}.has-warning .input-group-addon{color:#f0ad4e;border-color:#f0ad4e;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#f0ad4e}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#d9534f}.has-error .form-control{border-color:#d9534f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#c9302c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #eba5a3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #eba5a3}.has-error .input-group-addon{color:#d9534f;border-color:#d9534f;background-color:#f2dede}.has-error .form-control-feedback{color:#d9534f}.has-feedback label~.form-control-feedback{top:27px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:31px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19.6666662px;font-size:20px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:14px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:16px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333333;background-color:#ffffff;border-color:#dddddd}.btn-default:focus,.btn-default.focus{color:#333333;background-color:#e6e6e6;border-color:#9d9d9d}.btn-default:hover{color:#333333;background-color:#e6e6e6;border-color:#bebebe}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333333;background-color:#e6e6e6;border-color:#bebebe}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#333333;background-color:#d4d4d4;border-color:#9d9d9d}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#ffffff;border-color:#dddddd}.btn-default .badge{color:#ffffff;background-color:#333333}.btn-primary{color:#ffffff;background-color:#4582ec;border-color:#4582ec}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#1863e6;border-color:#1045a1}.btn-primary:hover{color:#ffffff;background-color:#1863e6;border-color:#175fdd}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#1863e6;border-color:#175fdd}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#1455c6;border-color:#1045a1}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#4582ec;border-color:#4582ec}.btn-primary .badge{color:#4582ec;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#3fad46;border-color:#3fad46}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#318837;border-color:#1d5020}.btn-success:hover{color:#ffffff;background-color:#318837;border-color:#2f8034}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#318837;border-color:#2f8034}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#286d2c;border-color:#1d5020}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#3fad46;border-color:#3fad46}.btn-success .badge{color:#3fad46;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#5bc0de;border-color:#5bc0de}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#31b0d5;border-color:#1f7e9a}.btn-info:hover{color:#ffffff;background-color:#31b0d5;border-color:#2aabd2}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#31b0d5;border-color:#2aabd2}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#269abc;border-color:#1f7e9a}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#5bc0de}.btn-info .badge{color:#5bc0de;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#ec971f;border-color:#b06d0f}.btn-warning:hover{color:#ffffff;background-color:#ec971f;border-color:#eb9316}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#ec971f;border-color:#eb9316}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#d58512;border-color:#b06d0f}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning .badge{color:#f0ad4e;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#d9534f;border-color:#d9534f}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#c9302c;border-color:#8b211e}.btn-danger:hover{color:#ffffff;background-color:#c9302c;border-color:#c12e2a}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#c9302c;border-color:#c12e2a}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#ac2925;border-color:#8b211e}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d9534f}.btn-danger .badge{color:#d9534f;background-color:#ffffff}.btn-link{color:#4582ec;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#134fb8;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#b3b3b3;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:20px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:14px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:14px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:16px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:10px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#4582ec}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#4582ec}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#b3b3b3}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:14px;line-height:1.42857143;color:#b3b3b3;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:57px;padding:14px 16px;font-size:20px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:57px;line-height:57px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:33px;padding:5px 10px;font-size:14px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:33px;line-height:33px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:16px;font-weight:normal;line-height:1;color:#333333;text-align:center;background-color:#eeeeee;border:1px solid #dddddd;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:14px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:20px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#b3b3b3}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#b3b3b3;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#4582ec}.nav .nav-divider{height:1px;margin:10px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#4582ec}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:65px;margin-bottom:22px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:21.5px 15px;font-size:20px;line-height:22px;height:65px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:15.5px;margin-bottom:15.5px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:10.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:22px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:22px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:21.5px;padding-bottom:21.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:12.5px;margin-bottom:12.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:12.5px;margin-bottom:12.5px}.navbar-btn.btn-sm{margin-top:16px;margin-bottom:16px}.navbar-btn.btn-xs{margin-top:21.5px;margin-bottom:21.5px}.navbar-text{margin-top:21.5px;margin-bottom:21.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#ffffff;border-color:#dddddd}.navbar-default .navbar-brand{color:#4582ec}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#4582ec;background-color:transparent}.navbar-default .navbar-text{color:#333333}.navbar-default .navbar-nav>li>a{color:#4582ec}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#4582ec;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#4582ec;background-color:transparent}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#333333;background-color:transparent}.navbar-default .navbar-toggle{border-color:#dddddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#dddddd}.navbar-default .navbar-toggle .icon-bar{background-color:#cccccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#dddddd}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:transparent;color:#4582ec}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#4582ec}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#4582ec;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#4582ec;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#333333;background-color:transparent}}.navbar-default .navbar-link{color:#4582ec}.navbar-default .navbar-link:hover{color:#4582ec}.navbar-default .btn-link{color:#4582ec}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#4582ec}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#333333}.navbar-inverse{background-color:#ffffff;border-color:#dddddd}.navbar-inverse .navbar-brand{color:#333333}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#333333;background-color:transparent}.navbar-inverse .navbar-text{color:#333333}.navbar-inverse .navbar-nav>li>a{color:#333333}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#333333;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#333333;background-color:transparent}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#dddddd}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#dddddd}.navbar-inverse .navbar-toggle .icon-bar{background-color:#cccccc}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#ededed}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:transparent;color:#333333}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#dddddd}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#dddddd}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#333333}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#333333;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#333333;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-link{color:#333333}.navbar-inverse .navbar-link:hover{color:#333333}.navbar-inverse .btn-link{color:#333333}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#333333}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:22px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#b3b3b3}.pagination{display:inline-block;padding-left:0;margin:22px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#333333;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#ffffff;background-color:#4582ec;border-color:#4582ec}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#ffffff;background-color:#4582ec;border-color:#4582ec;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#b3b3b3;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:20px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:14px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:22px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#4582ec}.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:#b3b3b3;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#ffffff}.label-default[href]:hover,.label-default[href]:focus{background-color:#e6e6e6}.label-primary{background-color:#4582ec}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1863e6}.label-success{background-color:#3fad46}.label-success[href]:hover,.label-success[href]:focus{background-color:#318837}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:14px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#4582ec;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#4582ec;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#f7f7f7}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:24px;font-weight:200}.jumbotron>hr{border-top-color:#dedede}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:72px}}.thumbnail{display:block;padding:4px;margin-bottom:22px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#4582ec}.thumbnail .caption{padding:9px;color:#333333}.alert{padding:15px;margin-bottom:22px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#3fad46;border-color:#3fad46;color:#ffffff}.alert-success hr{border-top-color:#389a3e}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#5bc0de;border-color:#5bc0de;color:#ffffff}.alert-info hr{border-top-color:#46b8da}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#f0ad4e;border-color:#f0ad4e;color:#ffffff}.alert-warning hr{border-top-color:#eea236}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#d9534f;border-color:#d9534f;color:#ffffff}.alert-danger hr{border-top-color:#d43f3a}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:22px;margin-bottom:22px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:14px;line-height:22px;color:#ffffff;text-align:center;background-color:#4582ec;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3fad46}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#b3b3b3;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#b3b3b3}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#4582ec;border-color:#4582ec}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#fefeff}.list-group-item-success{color:#3fad46;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3fad46}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#3fad46;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#3fad46;border-color:#3fad46}.list-group-item-info{color:#5bc0de;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#5bc0de}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#5bc0de;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.list-group-item-warning{color:#f0ad4e;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#f0ad4e}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#f0ad4e;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.list-group-item-danger{color:#d9534f;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#d9534f}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#d9534f;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#d9534f;border-color:#d9534f}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:22px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:18px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#ffffff;border-top:1px solid #dddddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:22px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#4582ec}.panel-primary>.panel-heading{color:#ffffff;background-color:#4582ec;border-color:#4582ec}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#4582ec}.panel-primary>.panel-heading .badge{color:#4582ec;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#4582ec}.panel-success{border-color:#3fad46}.panel-success>.panel-heading{color:#ffffff;background-color:#3fad46;border-color:#3fad46}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3fad46}.panel-success>.panel-heading .badge{color:#3fad46;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3fad46}.panel-info{border-color:#5bc0de}.panel-info>.panel-heading{color:#ffffff;background-color:#5bc0de;border-color:#5bc0de}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#5bc0de}.panel-info>.panel-heading .badge{color:#5bc0de;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#5bc0de}.panel-warning{border-color:#f0ad4e}.panel-warning>.panel-heading{color:#ffffff;background-color:#f0ad4e;border-color:#f0ad4e}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f0ad4e}.panel-warning>.panel-heading .badge{color:#f0ad4e;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f0ad4e}.panel-danger{border-color:#d9534f}.panel-danger>.panel-heading{color:#ffffff;background-color:#d9534f;border-color:#d9534f}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d9534f}.panel-danger>.panel-heading .badge{color:#d9534f;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d9534f}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f7f7f7;border:1px solid #e5e5e5;border-radius:4px;-webkit-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-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:24px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:Georgia,"Times New Roman",Times,serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#000000;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:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:Georgia,"Times New Roman",Times,serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:16px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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:16px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.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:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{font-family:"Raleway","Helvetica Neue",Helvetica,Arial,sans-serif}.navbar-nav,.navbar-form{margin-left:0;margin-right:0}.navbar-nav>li>a{margin:12.5px 6px;padding:8px 12px;border:1px solid transparent;border-radius:4px}.navbar-nav>li>a:hover{border:1px solid #ddd}.navbar-nav>.active>a,.navbar-nav>.active>a:hover{border:1px solid #ddd}.navbar-default .navbar-nav>.active>a:hover{color:#4582ec}.navbar-inverse .navbar-nav>.active>a:hover{color:#333333}.navbar-brand{padding-top:12.5px;padding-bottom:12.5px;line-height:1.9}@media (min-width:768px){.navbar .navbar-nav>li>a{padding:8px 12px}}@media (max-width:768px - 1){.navbar .navbar-nav>li>a{margin:0}}.btn{font-family:"Raleway","Helvetica Neue",Helvetica,Arial,sans-serif}legend{font-family:"Raleway","Helvetica Neue",Helvetica,Arial,sans-serif}.input-group-addon{font-family:"Raleway","Helvetica Neue",Helvetica,Arial,sans-serif}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border:1px solid #ddd}.pagination{font-family:"Raleway","Helvetica Neue",Helvetica,Arial,sans-serif}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 24px}.pager{font-family:"Raleway","Helvetica Neue",Helvetica,Arial,sans-serif}.pager a{color:#333333}.pager a:hover{border-color:transparent;color:#fff}.pager .disabled a{border-color:#dddddd}.close{color:#fff;text-decoration:none;text-shadow:none;opacity:0.4}.close:hover,.close:focus{color:#fff;opacity:1}.alert .alert-link{color:#ffffff;text-decoration:underline}.label{font-family:"Raleway","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:normal}.label-default{border:1px solid #ddd;color:#333333}.badge{padding:1px 7px 5px;vertical-align:2px;font-family:"Raleway","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:normal}.panel{-webkit-box-shadow:none;box-shadow:none}.panel-default .close{color:#333333}.modal .close{color:#333333} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/sandstone/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/sandstone/bootstrap.min.css deleted file mode 100644 index 48ff1700ef..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/sandstone/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Roboto:400,500");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#3e3f3a;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#93c54b;text-decoration:none}a:hover,a:focus{color:#79a736;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #f8f5f0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#98978b}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#98978b}.text-primary{color:#325d88}a.text-primary:hover,a.text-primary:focus{color:#244363}.text-success{color:#93c54b}a.text-success:hover,a.text-success:focus{color:#79a736}.text-info{color:#29abe0}a.text-info:hover,a.text-info:focus{color:#1b8dbb}.text-warning{color:#f47c3c}a.text-warning:hover,a.text-warning:focus{color:#ef5c0e}.text-danger{color:#d9534f}a.text-danger:hover,a.text-danger:focus{color:#c9302c}.bg-primary{color:#fff;background-color:#325d88}a.bg-primary:hover,a.bg-primary:focus{background-color:#244363}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #f8f5f0}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #98978b}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #dfd7ca}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#3e3f3a}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #dfd7ca;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#8e8c84;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#98978b;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dfd7ca}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dfd7ca}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dfd7ca}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dfd7ca}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dfd7ca}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f8f5f0}.table-hover>tbody>tr:hover{background-color:#f8f5f0}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f8f5f0}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#f0e9df}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dfd7ca}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:inherit;border:0;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:13px;font-size:14px;line-height:1.42857143;color:#3e3f3a}.form-control{display:block;width:100%;height:46px;padding:12px 16px;font-size:14px;line-height:1.42857143;color:#3e3f3a;background-color:#ffffff;background-image:none;border:1px solid #dfd7ca;border-radius:4px;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:transparent;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6)}.form-control::-moz-placeholder{color:#dfd7ca;opacity:1}.form-control:-ms-input-placeholder{color:#dfd7ca}.form-control::-webkit-input-placeholder{color:#dfd7ca}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#f8f5f0;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:46px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:66px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:13px;padding-bottom:13px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:66px;padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:66px;line-height:66px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:66px;padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:66px;line-height:66px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:66px;min-height:38px;padding:21px 30px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:57.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:46px;height:46px;line-height:46px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:66px;height:66px;line-height:66px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#93c54b}.has-success .form-control{border-color:#93c54b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#79a736;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c1de98;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c1de98}.has-success .input-group-addon{color:#93c54b;border-color:#93c54b;background-color:#dff0d8}.has-success .form-control-feedback{color:#93c54b}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#f47c3c}.has-warning .form-control{border-color:#f47c3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#ef5c0e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f9bd9d;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f9bd9d}.has-warning .input-group-addon{color:#f47c3c;border-color:#f47c3c;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#f47c3c}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#d9534f}.has-error .form-control{border-color:#d9534f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#c9302c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #eba5a3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #eba5a3}.has-error .input-group-addon{color:#d9534f;border-color:#d9534f;background-color:#f2dede}.has-error .form-control-feedback{color:#d9534f}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#7f8177}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:13px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:33px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:13px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:27.666666px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:12px 16px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#3e3f3a;border-color:transparent}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#242422;border-color:rgba(0,0,0,0)}.btn-default:hover{color:#ffffff;background-color:#242422;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#242422;border-color:rgba(0,0,0,0)}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#121210;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#3e3f3a;border-color:transparent}.btn-default .badge{color:#3e3f3a;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#325d88;border-color:transparent}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#244363;border-color:rgba(0,0,0,0)}.btn-primary:hover{color:#ffffff;background-color:#244363;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#244363;border-color:rgba(0,0,0,0)}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#1b3249;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#325d88;border-color:transparent}.btn-primary .badge{color:#325d88;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#93c54b;border-color:transparent}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#79a736;border-color:rgba(0,0,0,0)}.btn-success:hover{color:#ffffff;background-color:#79a736;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#79a736;border-color:rgba(0,0,0,0)}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#658c2d;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#93c54b;border-color:transparent}.btn-success .badge{color:#93c54b;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#29abe0;border-color:transparent}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#1b8dbb;border-color:rgba(0,0,0,0)}.btn-info:hover{color:#ffffff;background-color:#1b8dbb;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#1b8dbb;border-color:rgba(0,0,0,0)}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#17759c;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#29abe0;border-color:transparent}.btn-info .badge{color:#29abe0;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f47c3c;border-color:transparent}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#ef5c0e;border-color:rgba(0,0,0,0)}.btn-warning:hover{color:#ffffff;background-color:#ef5c0e;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#ef5c0e;border-color:rgba(0,0,0,0)}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#ce4f0c;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f47c3c;border-color:transparent}.btn-warning .badge{color:#f47c3c;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#d9534f;border-color:transparent}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:hover{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#ac2925;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:transparent}.btn-danger .badge{color:#d9534f;background-color:#ffffff}.btn-link{color:#93c54b;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#79a736;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#dfd7ca;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:14px;text-align:left;background-color:#ffffff;border:1px solid #dfd7ca;border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#f8f5f0}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#98978b;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#98978b;background-color:#f8f5f0}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#98978b;text-decoration:none;outline:0;background-color:#f8f5f0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#dfd7ca}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#dfd7ca;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:66px;padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:66px;line-height:66px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:12px 16px;font-size:14px;font-weight:normal;line-height:1;color:#3e3f3a;text-align:center;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:20px 30px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#f8f5f0}.nav>li.disabled>a{color:#dfd7ca}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#dfd7ca;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#f8f5f0;border-color:#93c54b}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dfd7ca}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#dfd7ca #dfd7ca #dfd7ca}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#98978b;background-color:#ffffff;border:1px solid #dfd7ca;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dfd7ca}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dfd7ca;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#98978b;background-color:#f8f5f0}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dfd7ca}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dfd7ca;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:20px 15px;font-size:18px;line-height:20px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:10px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:20px;padding-bottom:20px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:7px;margin-bottom:7px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:7px;margin-bottom:7px}.navbar-btn.btn-sm{margin-top:15px;margin-bottom:15px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:20px;margin-bottom:20px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#3e3f3a;border-color:#3e3f3a}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-text{color:#8e8c84}.navbar-default .navbar-nav>li>a{color:#98978b}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#393a35}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#393a35}.navbar-default .navbar-toggle .icon-bar{background-color:#98978b}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#3e3f3a}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#393a35;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#98978b}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#393a35}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#98978b}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#98978b}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#93c54b;border-color:#93c54b}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#dfd7ca}.navbar-inverse .navbar-nav>li>a{color:#6b9430}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#89be3d}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#89be3d}.navbar-inverse .navbar-toggle .icon-bar{background-color:#6b9430}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#81b33a}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#89be3d;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#93c54b}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#93c54b}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#6b9430}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#89be3d}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#6b9430}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#6b9430}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f8f5f0;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#dfd7ca}.breadcrumb>.active{color:#98978b}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:12px 16px;line-height:1.42857143;text-decoration:none;color:#98978b;background-color:#f8f5f0;border:1px solid #dfd7ca;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#8e8c84;background-color:#dfd7ca;border-color:#dfd7ca}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#8e8c84;background-color:#dfd7ca;border-color:#dfd7ca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#dfd7ca;background-color:#f8f5f0;border-color:#dfd7ca;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:20px 30px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#dfd7ca}.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:#dfd7ca;background-color:#f8f5f0;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#3e3f3a}.label-default[href]:hover,.label-default[href]:focus{background-color:#242422}.label-primary{background-color:#325d88}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#244363}.label-success{background-color:#93c54b}.label-success[href]:hover,.label-success[href]:focus{background-color:#79a736}.label-info{background-color:#29abe0}.label-info[href]:hover,.label-info[href]:focus{background-color:#1b8dbb}.label-warning{background-color:#f47c3c}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ef5c0e}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:normal;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#93c54b;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#ffffff;background-color:#93c54b}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#f8f5f0}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#e8decd}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#93c54b}.thumbnail .caption{padding:9px;color:#3e3f3a}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#93c54b;border-color:transparent;color:#ffffff}.alert-success hr{border-top-color:rgba(0,0,0,0)}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#29abe0;border-color:transparent;color:#ffffff}.alert-info hr{border-top-color:rgba(0,0,0,0)}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#f47c3c;border-color:transparent;color:#ffffff}.alert-warning hr{border-top-color:rgba(0,0,0,0)}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#d9534f;border-color:transparent;color:#ffffff}.alert-danger hr{border-top-color:rgba(0,0,0,0)}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 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:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#325d88;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#93c54b}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#29abe0}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#f47c3c}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dfd7ca}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#3e3f3a}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:inherit}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#3e3f3a;background-color:#f8f5f0}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#f8f5f0;color:#dfd7ca;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#dfd7ca}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#3e3f3a;background-color:#f8f5f0;border-color:#dfd7ca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#3e3f3a}.list-group-item-success{color:#93c54b;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#93c54b}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#93c54b;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#93c54b;border-color:#93c54b}.list-group-item-info{color:#29abe0;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#29abe0}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#29abe0;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#29abe0;border-color:#29abe0}.list-group-item-warning{color:#f47c3c;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#f47c3c}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#f47c3c;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#f47c3c;border-color:#f47c3c}.list-group-item-danger{color:#d9534f;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#d9534f}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#d9534f;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#d9534f;border-color:#d9534f}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f8f5f0;border-top:1px solid #dfd7ca;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dfd7ca}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dfd7ca}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dfd7ca}.panel-default{border-color:#dfd7ca}.panel-default>.panel-heading{color:#3e3f3a;background-color:#f8f5f0;border-color:#dfd7ca}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dfd7ca}.panel-default>.panel-heading .badge{color:#f8f5f0;background-color:#3e3f3a}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dfd7ca}.panel-primary{border-color:#325d88}.panel-primary>.panel-heading{color:#ffffff;background-color:#325d88;border-color:#325d88}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#325d88}.panel-primary>.panel-heading .badge{color:#325d88;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#325d88}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#93c54b;background-color:#93c54b;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#93c54b;background-color:#93c54b}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#29abe0;background-color:#29abe0;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#29abe0;background-color:#29abe0}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#f47c3c;background-color:#f47c3c;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#f47c3c;background-color:#f47c3c}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#d9534f;background-color:#d9534f;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#d9534f;background-color:#d9534f}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f8f5f0;border:1px solid transparent;border-radius:4px;-webkit-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-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 0 0 transparent;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #f8f5f0;border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #f8f5f0;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #f8f5f0}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:1;filter:alpha(opacity=100)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#3e3f3a;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:#3e3f3a}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#3e3f3a}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#3e3f3a}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#3e3f3a}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#3e3f3a}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#3e3f3a}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#3e3f3a}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#3e3f3a}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #dfd7ca;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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;background-color:#f8f5f0;border-bottom:1px solid #f0e9df;border-radius:5px 5px 0 0}.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:#b9a78a;border-top-color:#dfd7ca;bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#b9a78a;border-right-color:#dfd7ca}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#b9a78a;border-bottom-color:#dfd7ca;top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#b9a78a;border-left-color:#dfd7ca}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.sandstone{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.navbar .nav>li>a{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.navbar-form input,.navbar-form .form-control{border:none}.btn{border:none;font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.btn:hover{border-color:transparent}.btn-lg{line-height:26px}.btn-default:hover{background-color:#393a35}input,.form-control{-webkit-box-shadow:none;box-shadow:none}input:focus,.form-control:focus{border-color:#dfd7ca;-webkit-box-shadow:none;box-shadow:none}.nav{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:#dfd7ca}.nav-tabs>li>a{background-color:#f8f5f0;border-color:#dfd7ca;color:#98978b}.nav-tabs>li.disabled>a:hover{background-color:#f8f5f0}.nav-pills a{color:#98978b}.nav-pills li>a{border:1px solid transparent}.nav-pills li.active>a,.nav-pills li>a:hover{border-color:#dfd7ca}.nav-pills li.disabled>a{border-color:transparent}.breadcrumb{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase;border:1px solid #dfd7ca}.breadcrumb a{color:#98978b}.pagination{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.pager{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.pager li>a{color:#98978b}.dropdown-menu>li>a{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.alert a,.alert .alert-link{color:#fff}.tooltip{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.progress{border-radius:10px;background-color:#dfd7ca;-webkit-box-shadow:none;box-shadow:none}.progress-bar{-webkit-box-shadow:none;box-shadow:none}.list-group-item{padding:16px 24px}.well{-webkit-box-shadow:none;box-shadow:none}.panel{-webkit-box-shadow:none;box-shadow:none}.panel .panel-heading,.panel .panel-title{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase;color:#fff}.panel .panel-footer{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.panel-default .panel-heading,.panel-default .panel-title,.panel-default .panel-footer{color:#98978b} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/simplex/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/simplex/bootstrap.min.css deleted file mode 100644 index 4439b67524..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/simplex/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,700");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:1.42857143;color:#777777;background-color:#fcfcfc}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#d9230f;text-decoration:none}a:hover,a:focus{color:#91170a;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fcfcfc;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:18px;margin-bottom:18px;border:0;border-top:1px solid #dddddd}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;line-height:1.1;color:#444444}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#808080}h1,.h1,h2,.h2,h3,.h3{margin-top:18px;margin-bottom:9px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:9px;margin-bottom:9px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:33px}h2,.h2{font-size:27px}h3,.h3{font-size:23px}h4,.h4{font-size:17px}h5,.h5{font-size:13px}h6,.h6{font-size:12px}p{margin:0 0 9px}.lead{margin-bottom:18px;font-size:14px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}small,.small{font-size:92%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#808080}.text-primary{color:#d9230f}a.text-primary:hover,a.text-primary:focus{color:#a91b0c}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-danger{color:#b94a48}a.text-danger:hover,a.text-danger:focus{color:#953b39}.bg-primary{color:#fff;background-color:#d9230f}a.bg-primary:hover,a.bg-primary:focus{background-color:#a91b0c}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:8px;margin:36px 0 18px;border-bottom:1px solid #dddddd}ul,ol{margin-top:0;margin-bottom:9px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:18px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #808080}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:9px 18px;margin:0 0 18px;font-size:16.25px;border-left:5px solid #dddddd}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#808080}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #dddddd;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:18px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#444444;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#808080;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:18px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#fcfcfc}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:13.5px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:18px;font-size:19.5px;line-height:inherit;color:#777777;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:13px;line-height:1.42857143;color:#777777}.form-control{display:block;width:100%;height:36px;padding:8px 12px;font-size:13px;line-height:1.42857143;color:#777777;background-color:#ffffff;background-image:none;border:1px solid #dddddd;border-radius:4px;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#dddddd;opacity:1}.form-control:-ms-input-placeholder{color:#dddddd}.form-control::-webkit-input-placeholder{color:#dddddd}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#dddddd;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:36px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:53px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:18px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:31px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:30px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:53px;padding:14px 16px;font-size:17px;line-height:1.3333333;border-radius:6px}select.input-lg{height:53px;line-height:53px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:53px;padding:14px 16px;font-size:17px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:53px;line-height:53px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:53px;min-height:35px;padding:15px 16px;font-size:17px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:45px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:36px;height:36px;line-height:36px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:53px;height:53px;line-height:53px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-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}.has-success .input-group-addon{color:#468847;border-color:#468847;background-color:#dff0d8}.has-success .form-control-feedback{color:#468847}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-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}.has-warning .input-group-addon{color:#c09853;border-color:#c09853;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#c09853}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;border-color:#b94a48;background-color:#f2dede}.has-error .form-control-feedback{color:#b94a48}.has-feedback label~.form-control-feedback{top:23px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#b7b7b7}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19.6666662px;font-size:17px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:13px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#474949;border-color:#474949}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#2e2f2f;border-color:#080808}.btn-default:hover{color:#ffffff;background-color:#2e2f2f;border-color:#292a2a}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#2e2f2f;border-color:#292a2a}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#1c1d1d;border-color:#080808}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#474949;border-color:#474949}.btn-default .badge{color:#474949;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#d9230f;border-color:#d9230f}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#a91b0c;border-color:#621007}.btn-primary:hover{color:#ffffff;background-color:#a91b0c;border-color:#a01a0b}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#a91b0c;border-color:#a01a0b}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#881609;border-color:#621007}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#d9230f;border-color:#d9230f}.btn-primary .badge{color:#d9230f;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#469408;border-color:#469408}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#2f6405;border-color:#0d1b01}.btn-success:hover{color:#ffffff;background-color:#2f6405;border-color:#2b5a05}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#2f6405;border-color:#2b5a05}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#1f4204;border-color:#0d1b01}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#469408;border-color:#469408}.btn-success .badge{color:#469408;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#029acf;border-color:#029acf}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#02749c;border-color:#013c51}.btn-info:hover{color:#ffffff;background-color:#02749c;border-color:#016d92}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#02749c;border-color:#016d92}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#015a79;border-color:#013c51}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#029acf;border-color:#029acf}.btn-info .badge{color:#029acf;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#9b479f;border-color:#9b479f}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#79377c;border-color:#452047}.btn-warning:hover{color:#ffffff;background-color:#79377c;border-color:#723475}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#79377c;border-color:#723475}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#612c63;border-color:#452047}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#9b479f;border-color:#9b479f}.btn-warning .badge{color:#9b479f;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#d9831f;border-color:#d9831f}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#ac6819;border-color:#69400f}.btn-danger:hover{color:#ffffff;background-color:#ac6819;border-color:#a36317}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#ac6819;border-color:#a36317}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#8d5514;border-color:#69400f}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9831f;border-color:#d9831f}.btn-danger .badge{color:#d9831f;background-color:#ffffff}.btn-link{color:#d9230f;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#91170a;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#808080;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:17px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:13px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:8px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#444444;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#d9230f}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#d9230f}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#808080}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#808080;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:53px;padding:14px 16px;font-size:17px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:53px;line-height:53px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:13px;font-weight:normal;line-height:1;color:#777777;text-align:center;background-color:#dddddd;border:1px solid #dddddd;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:17px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#dddddd}.nav>li.disabled>a{color:#808080}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#808080;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#dddddd;border-color:#d9230f}.nav .nav-divider{height:1px;margin:8px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#dddddd #dddddd #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#777777;background-color:#fcfcfc;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fcfcfc}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#d9230f}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fcfcfc}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:40px;margin-bottom:18px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:11px 15px;font-size:17px;line-height:18px;height:40px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:5.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:18px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:18px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:11px;padding-bottom:11px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:2px;margin-bottom:2px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:2px;margin-bottom:2px}.navbar-btn.btn-sm{margin-top:5px;margin-bottom:5px}.navbar-btn.btn-xs{margin-top:9px;margin-bottom:9px}.navbar-text{margin-top:11px;margin-bottom:11px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#ffffff;border-color:#eeeeee}.navbar-default .navbar-brand{color:#777777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-text{color:#777777}.navbar-default .navbar-nav>li>a{color:#777777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-default .navbar-toggle{border-color:#dddddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#dddddd}.navbar-default .navbar-toggle .icon-bar{background-color:#cccccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#eeeeee}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:transparent;color:#d9230f}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-default .navbar-link{color:#777777}.navbar-default .navbar-link:hover{color:#d9230f}.navbar-default .btn-link{color:#777777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#d9230f}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#444444}.navbar-inverse{background-color:#d9230f;border-color:#a91b0c}.navbar-inverse .navbar-brand{color:#fac0ba}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#fac0ba}.navbar-inverse .navbar-nav>li>a{color:#fac0ba}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#a91b0c}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#a91b0c}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#b81e0d}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:transparent;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#a91b0c}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#a91b0c}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fac0ba}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-link{color:#fac0ba}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#fac0ba}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:18px;list-style:none;background-color:transparent;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#808080}.pagination{display:inline-block;padding-left:0;margin:18px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#444444;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#ffffff;background-color:#d9230f;border-color:#d9230f}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#ffffff;background-color:#d9230f;border-color:#d9230f;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#dddddd;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:17px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:18px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#d9230f}.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:#dddddd;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#474949}.label-default[href]:hover,.label-default[href]:focus{background-color:#2e2f2f}.label-primary{background-color:#d9230f}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#a91b0c}.label-success{background-color:#469408}.label-success[href]:hover,.label-success[href]:focus{background-color:#2f6405}.label-info{background-color:#029acf}.label-info[href]:hover,.label-info[href]:focus{background-color:#02749c}.label-warning{background-color:#9b479f}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#79377c}.label-danger{background-color:#d9831f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#ac6819}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#d9230f;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#d9230f;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#f4f4f4}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:20px;font-weight:200}.jumbotron>hr{border-top-color:#dbdbdb}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:59px}}.thumbnail{display:block;padding:4px;margin-bottom:18px;line-height:1.42857143;background-color:#fcfcfc;border:1px solid #dddddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#d9230f}.thumbnail .caption{padding:9px;color:#777777}.alert{padding:15px;margin-bottom:18px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{background-color:#fcf8e3;border-color:#fbeed5;color:#c09853}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:18px;color:#ffffff;text-align:center;background-color:#d9230f;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#469408}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#029acf}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#9b479f}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#d9831f}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#dddddd;color:#808080;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#808080}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#d9230f;border-color:#d9230f}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#fac0ba}.list-group-item-success{color:#468847;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#468847}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}.list-group-item-info{color:#3a87ad;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#3a87ad}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}.list-group-item-warning{color:#c09853;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#c09853}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}.list-group-item-danger{color:#b94a48;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#b94a48}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:18px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:15px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#fcfcfc;border-top:1px solid #dddddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:18px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#444444;background-color:#fcfcfc;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#fcfcfc;background-color:#444444}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#d9230f}.panel-primary>.panel-heading{color:#ffffff;background-color:#d9230f;border-color:#d9230f}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d9230f}.panel-primary>.panel-heading .badge{color:#d9230f;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d9230f}.panel-success{border-color:#469408}.panel-success>.panel-heading{color:#ffffff;background-color:#469408;border-color:#469408}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#469408}.panel-success>.panel-heading .badge{color:#469408;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#469408}.panel-info{border-color:#029acf}.panel-info>.panel-heading{color:#ffffff;background-color:#029acf;border-color:#029acf}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#029acf}.panel-info>.panel-heading .badge{color:#029acf;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#029acf}.panel-warning{border-color:#9b479f}.panel-warning>.panel-heading{color:#ffffff;background-color:#9b479f;border-color:#9b479f}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#9b479f}.panel-warning>.panel-heading .badge{color:#9b479f;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#9b479f}.panel-danger{border-color:#d9831f}.panel-danger>.panel-heading{color:#ffffff;background-color:#d9831f;border-color:#d9831f}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d9831f}.panel-danger>.panel-heading .badge{color:#d9831f;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d9831f}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f4f4f4;border:1px solid #e3e3e3;border-radius:4px;-webkit-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-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:19.5px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#000000;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:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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:13px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.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:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar-inverse .badge{background-color:#fff;color:#d9230f}.btn{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.btn-default,.btn-default:hover{background-image:-webkit-linear-gradient(#4f5151, #474949 6%, #3f4141);background-image:-o-linear-gradient(#4f5151, #474949 6%, #3f4141);background-image:-webkit-gradient(linear, left top, left bottom, from(#4f5151), color-stop(6%, #474949), to(#3f4141));background-image:linear-gradient(#4f5151, #474949 6%, #3f4141);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4f5151', endColorstr='#ff3f4141', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #2e2f2f}.btn-primary,.btn-primary:hover{background-image:-webkit-linear-gradient(#e72510, #d9230f 6%, #cb210e);background-image:-o-linear-gradient(#e72510, #d9230f 6%, #cb210e);background-image:-webkit-gradient(linear, left top, left bottom, from(#e72510), color-stop(6%, #d9230f), to(#cb210e));background-image:linear-gradient(#e72510, #d9230f 6%, #cb210e);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe72510', endColorstr='#ffcb210e', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #a91b0c}.btn-success,.btn-success:hover{background-image:-webkit-linear-gradient(#4da309, #469408 6%, #3f8507);background-image:-o-linear-gradient(#4da309, #469408 6%, #3f8507);background-image:-webkit-gradient(linear, left top, left bottom, from(#4da309), color-stop(6%, #469408), to(#3f8507));background-image:linear-gradient(#4da309, #469408 6%, #3f8507);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4da309', endColorstr='#ff3f8507', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #2f6405}.btn-info,.btn-info:hover{background-image:-webkit-linear-gradient(#02a5de, #029acf 6%, #028fc0);background-image:-o-linear-gradient(#02a5de, #029acf 6%, #028fc0);background-image:-webkit-gradient(linear, left top, left bottom, from(#02a5de), color-stop(6%, #029acf), to(#028fc0));background-image:linear-gradient(#02a5de, #029acf 6%, #028fc0);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff02a5de', endColorstr='#ff028fc0', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #02749c}.btn-warning,.btn-warning:hover{background-image:-webkit-linear-gradient(#a54caa, #9b479f 6%, #914294);background-image:-o-linear-gradient(#a54caa, #9b479f 6%, #914294);background-image:-webkit-gradient(linear, left top, left bottom, from(#a54caa), color-stop(6%, #9b479f), to(#914294));background-image:linear-gradient(#a54caa, #9b479f 6%, #914294);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa54caa', endColorstr='#ff914294', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #79377c}.btn-danger,.btn-danger:hover{background-image:-webkit-linear-gradient(#e08b27, #d9831f 6%, #cc7b1d);background-image:-o-linear-gradient(#e08b27, #d9831f 6%, #cc7b1d);background-image:-webkit-gradient(linear, left top, left bottom, from(#e08b27), color-stop(6%, #d9831f), to(#cc7b1d));background-image:linear-gradient(#e08b27, #d9831f 6%, #cc7b1d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe08b27', endColorstr='#ffcc7b1d', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #ac6819}body{font-weight:200}th{color:#444444}legend{color:#444444}label{font-weight:normal}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#d9831f}.has-warning .form-control,.has-warning .form-control:focus{border-color:#d9831f}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#d9230f}.has-error .form-control,.has-error .form-control:focus{border-color:#d9230f}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#469408}.has-success .form-control,.has-success .form-control:focus{border-color:#469408}.pager a{color:#444444}.pager a:hover,.pager .active>a{border-color:#d9230f;color:#fff}.pager .disabled>a{border-color:#dddddd} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/slate/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/slate/bootstrap.min.css deleted file mode 100644 index a333aac28f..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/slate/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#c8c8c8;background-color:#272b30}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#ffffff;text-decoration:none}a:hover,a:focus{color:#ffffff;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#1c1e22;border:1px solid #0c0d0e;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #1c1e22}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#7a8288}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#f89406;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#7a8288}.text-primary{color:#7a8288}a.text-primary:hover,a.text-primary:focus{color:#62686d}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#7a8288}a.bg-primary:hover,a.bg-primary:focus{background-color:#62686d}.bg-success{background-color:#62c462}a.bg-success:hover,a.bg-success:focus{background-color:#42b142}.bg-info{background-color:#5bc0de}a.bg-info:hover,a.bg-info:focus{background-color:#31b0d5}.bg-warning{background-color:#f89406}a.bg-warning:hover,a.bg-warning:focus{background-color:#c67605}.bg-danger{background-color:#ee5f5b}a.bg-danger:hover,a.bg-danger:focus{background-color:#e9322d}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #1c1e22}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #7a8288}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #7a8288}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#7a8288}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #7a8288;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#3a3f44;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:#2e3338}caption{padding-top:8px;padding-bottom:8px;color:#7a8288;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #1c1e22}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #1c1e22}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #1c1e22}.table .table{background-color:#272b30}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #1c1e22}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #1c1e22}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#353a41}.table-hover>tbody>tr:hover{background-color:#49515a}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#49515a}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#3e444c}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#62c462}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#4fbd4f}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#5bc0de}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#46b8da}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#f89406}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#df8505}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#ee5f5b}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ec4844}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #1c1e22}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#c8c8c8;border:0;border-bottom:1px solid #1c1e22}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:14px;line-height:1.42857143;color:#272b30}.form-control{display:block;width:100%;height:38px;padding:8px 12px;font-size:14px;line-height:1.42857143;color:#272b30;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:4px;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#7a8288;opacity:1}.form-control:-ms-input-placeholder{color:#7a8288}.form-control::-webkit-input-placeholder{color:#7a8288}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#999999;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:38px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:54px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:54px;line-height:54px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:54px;line-height:54px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:47.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#62c462}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#f89406}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ee5f5b}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#ffffff}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:29px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19.6666662px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#3a3f44;border-color:#3a3f44}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#232628;border-color:#000000}.btn-default:hover{color:#ffffff;background-color:#232628;border-color:#1e2023}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#232628;border-color:#1e2023}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#121415;border-color:#000000}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#3a3f44;border-color:#3a3f44}.btn-default .badge{color:#3a3f44;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#7a8288;border-color:#7a8288}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#62686d;border-color:#3e4245}.btn-primary:hover{color:#ffffff;background-color:#62686d;border-color:#5d6368}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#62686d;border-color:#5d6368}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#51565a;border-color:#3e4245}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#7a8288;border-color:#7a8288}.btn-primary .badge{color:#7a8288;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#62c462;border-color:#62c462}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#42b142;border-color:#2d792d}.btn-success:hover{color:#ffffff;background-color:#42b142;border-color:#40a940}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#42b142;border-color:#40a940}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#399739;border-color:#2d792d}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#62c462;border-color:#62c462}.btn-success .badge{color:#62c462;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#5bc0de;border-color:#5bc0de}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#31b0d5;border-color:#1f7e9a}.btn-info:hover{color:#ffffff;background-color:#31b0d5;border-color:#2aabd2}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#31b0d5;border-color:#2aabd2}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#269abc;border-color:#1f7e9a}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#5bc0de}.btn-info .badge{color:#5bc0de;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f89406;border-color:#f89406}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#c67605;border-color:#7c4a03}.btn-warning:hover{color:#ffffff;background-color:#c67605;border-color:#bc7005}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#c67605;border-color:#bc7005}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#a36104;border-color:#7c4a03}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f89406;border-color:#f89406}.btn-warning .badge{color:#f89406;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#ee5f5b;border-color:#ee5f5b}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#e9322d;border-color:#b71713}.btn-danger:hover{color:#ffffff;background-color:#e9322d;border-color:#e82924}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#e9322d;border-color:#e82924}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#dc1c17;border-color:#b71713}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#ee5f5b;border-color:#ee5f5b}.btn-danger .badge{color:#ee5f5b;background-color:#ffffff}.btn-link{color:#ffffff;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#ffffff;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#7a8288;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:14px;text-align:left;background-color:#3a3f44;border:1px solid #272b30;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#272b30}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#c8c8c8;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#272b30}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#272b30}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#7a8288}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#7a8288;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:54px;line-height:54px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:14px;font-weight:normal;line-height:1;color:#272b30;text-align:center;background-color:#999999;border:1px solid #cccccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#3e444c}.nav>li.disabled>a{color:#7a8288}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#7a8288;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#3e444c;border-color:#ffffff}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #1c1e22}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#1c1e22 #1c1e22 #1c1e22}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#ffffff;background-color:#3e444c;border:1px solid #1c1e22;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #1c1e22}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #1c1e22;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#272b30}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:transparent}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #1c1e22}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #1c1e22;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#272b30}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:6px;margin-bottom:6px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:6px;margin-bottom:6px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#3a3f44;border-color:#2b2e32}.navbar-default .navbar-brand{color:#c8c8c8}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-default .navbar-text{color:#c8c8c8}.navbar-default .navbar-nav>li>a{color:#c8c8c8}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#272b2e}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#272b2e}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#272b2e}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#272b2e}.navbar-default .navbar-toggle .icon-bar{background-color:#c8c8c8}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#2b2e32}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#272b2e;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#c8c8c8}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#272b2e}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#272b2e}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#c8c8c8}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#c8c8c8}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#7a8288;border-color:#62686d}.navbar-inverse .navbar-brand{color:#cccccc}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-inverse .navbar-text{color:#cccccc}.navbar-inverse .navbar-nav>li>a{color:#cccccc}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#5d6368}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#5d6368}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#5d6368}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#5d6368}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#697075}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#5d6368;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#62686d}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#62686d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#cccccc}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#5d6368}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#5d6368}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-link{color:#cccccc}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#cccccc}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:transparent;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#7a8288}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#ffffff;background-color:#3a3f44;border:1px solid rgba(0,0,0,0.6);margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#ffffff;background-color:transparent;border-color:rgba(0,0,0,0.6)}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#ffffff;background-color:#232628;border-color:rgba(0,0,0,0.6);cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#7a8288;background-color:#ffffff;border-color:rgba(0,0,0,0.6);cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#3a3f44;border:1px solid rgba(0,0,0,0.6);border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:transparent}.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:#7a8288;background-color:#3a3f44;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#3a3f44}.label-default[href]:hover,.label-default[href]:focus{background-color:#232628}.label-primary{background-color:#7a8288}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#62686d}.label-success{background-color:#62c462}.label-success[href]:hover,.label-success[href]:focus{background-color:#42b142}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f89406}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c67605}.label-danger{background-color:#ee5f5b}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#e9322d}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#7a8288;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#ffffff;background-color:#7a8288}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#1c1e22}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#050506}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#1c1e22;border:1px solid #0c0d0e;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#ffffff}.thumbnail .caption{padding:9px;color:#c8c8c8}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#62c462;border-color:#62bd4f;color:#ffffff}.alert-success hr{border-top-color:#55b142}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#5bc0de;border-color:#3dced8;color:#ffffff}.alert-info hr{border-top-color:#2ac7d2}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#f89406;border-color:#e96506;color:#ffffff}.alert-warning hr{border-top-color:#d05a05}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#ee5f5b;border-color:#ed4d63;color:#ffffff}.alert-danger hr{border-top-color:#ea364f}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 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:#1c1e22;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#7a8288;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#62c462}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#f89406}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#ee5f5b}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#32383e;border:1px solid rgba(0,0,0,0.6)}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#c8c8c8}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#ffffff}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#c8c8c8;background-color:#3e444c}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#999999;color:#7a8288;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#7a8288}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#3e444c;border-color:rgba(0,0,0,0.6)}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#a2aab4}.list-group-item-success{color:#ffffff;background-color:#62c462}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#4fbd4f}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#5bc0de}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#46b8da}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#f89406}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#df8505}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#ee5f5b}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#ec4844}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#2e3338;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#3e444c;border-top:1px solid rgba(0,0,0,0.6);border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #1c1e22}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid rgba(0,0,0,0.6)}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid rgba(0,0,0,0.6)}.panel-default{border-color:rgba(0,0,0,0.6)}.panel-default>.panel-heading{color:#c8c8c8;background-color:#3e444c;border-color:rgba(0,0,0,0.6)}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:rgba(0,0,0,0.6)}.panel-default>.panel-heading .badge{color:#3e444c;background-color:#c8c8c8}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:rgba(0,0,0,0.6)}.panel-primary{border-color:rgba(0,0,0,0.6)}.panel-primary>.panel-heading{color:#ffffff;background-color:#7a8288;border-color:rgba(0,0,0,0.6)}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:rgba(0,0,0,0.6)}.panel-primary>.panel-heading .badge{color:#7a8288;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:rgba(0,0,0,0.6)}.panel-success{border-color:rgba(0,0,0,0.6)}.panel-success>.panel-heading{color:#ffffff;background-color:#62c462;border-color:rgba(0,0,0,0.6)}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:rgba(0,0,0,0.6)}.panel-success>.panel-heading .badge{color:#62c462;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:rgba(0,0,0,0.6)}.panel-info{border-color:rgba(0,0,0,0.6)}.panel-info>.panel-heading{color:#ffffff;background-color:#5bc0de;border-color:rgba(0,0,0,0.6)}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:rgba(0,0,0,0.6)}.panel-info>.panel-heading .badge{color:#5bc0de;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:rgba(0,0,0,0.6)}.panel-warning{border-color:rgba(0,0,0,0.6)}.panel-warning>.panel-heading{color:#ffffff;background-color:#f89406;border-color:rgba(0,0,0,0.6)}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:rgba(0,0,0,0.6)}.panel-warning>.panel-heading .badge{color:#f89406;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:rgba(0,0,0,0.6)}.panel-danger{border-color:rgba(0,0,0,0.6)}.panel-danger>.panel-heading{color:#ffffff;background-color:#ee5f5b;border-color:rgba(0,0,0,0.6)}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:rgba(0,0,0,0.6)}.panel-danger>.panel-heading .badge{color:#ee5f5b;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:rgba(0,0,0,0.6)}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#1c1e22;border:1px solid #0c0d0e;border-radius:4px;-webkit-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-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#2e3338;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #1c1e22;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #1c1e22}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#000000;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:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#2e3338;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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;background-color:#2e3338;border-bottom:1px solid #22262a;border-radius:5px 5px 0 0}.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:#666666;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#2e3338}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#666666;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#2e3338}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#666666;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#2e3338}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#666666;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#2e3338;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{background-image:-webkit-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-o-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3a3f44), to(#313539));background-image:linear-gradient(#484e55, #3a3f44 60%, #313539);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484e55', endColorstr='#ff313539', GradientType=0);-webkit-filter:none;filter:none;border:1px solid rgba(0,0,0,0.6);text-shadow:1px 1px 1px rgba(0,0,0,0.3)}.navbar-inverse{background-image:-webkit-linear-gradient(#8a9196, #7a8288 60%, #70787d);background-image:-o-linear-gradient(#8a9196, #7a8288 60%, #70787d);background-image:-webkit-gradient(linear, left top, left bottom, from(#8a9196), color-stop(60%, #7a8288), to(#70787d));background-image:linear-gradient(#8a9196, #7a8288 60%, #70787d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8a9196', endColorstr='#ff70787d', GradientType=0);-webkit-filter:none;filter:none}.navbar-inverse .badge{background-color:#5d6368}.navbar-nav>li>a{border-right:1px solid rgba(0,0,0,0.2);border-left:1px solid rgba(255,255,255,0.1)}.navbar-nav>li>a:hover{background-image:-webkit-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-o-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-webkit-gradient(linear, left top, left bottom, from(#020202), color-stop(40%, #101112), to(#191b1d));background-image:linear-gradient(#020202, #101112 40%, #191b1d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff020202', endColorstr='#ff191b1d', GradientType=0);-webkit-filter:none;filter:none;border-left-color:transparent}.navbar .nav .open>a{border-color:transparent}.navbar-nav>li.active>a{border-left-color:transparent}.navbar-form{margin-left:5px;margin-right:5px}.btn,.btn:hover{border-color:rgba(0,0,0,0.6);text-shadow:1px 1px 1px rgba(0,0,0,0.3)}.btn-default{background-image:-webkit-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-o-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3a3f44), to(#313539));background-image:linear-gradient(#484e55, #3a3f44 60%, #313539);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484e55', endColorstr='#ff313539', GradientType=0);-webkit-filter:none;filter:none}.btn-default:hover{background-image:-webkit-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-o-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-webkit-gradient(linear, left top, left bottom, from(#020202), color-stop(40%, #101112), to(#191b1d));background-image:linear-gradient(#020202, #101112 40%, #191b1d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff020202', endColorstr='#ff191b1d', GradientType=0);-webkit-filter:none;filter:none}.btn-primary{background-image:-webkit-linear-gradient(#8a9196, #7a8288 60%, #70787d);background-image:-o-linear-gradient(#8a9196, #7a8288 60%, #70787d);background-image:-webkit-gradient(linear, left top, left bottom, from(#8a9196), color-stop(60%, #7a8288), to(#70787d));background-image:linear-gradient(#8a9196, #7a8288 60%, #70787d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8a9196', endColorstr='#ff70787d', GradientType=0);-webkit-filter:none;filter:none}.btn-primary:hover{background-image:-webkit-linear-gradient(#404448, #4e5458 40%, #585e62);background-image:-o-linear-gradient(#404448, #4e5458 40%, #585e62);background-image:-webkit-gradient(linear, left top, left bottom, from(#404448), color-stop(40%, #4e5458), to(#585e62));background-image:linear-gradient(#404448, #4e5458 40%, #585e62);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff404448', endColorstr='#ff585e62', GradientType=0);-webkit-filter:none;filter:none}.btn-success{background-image:-webkit-linear-gradient(#78cc78, #62c462 60%, #53be53);background-image:-o-linear-gradient(#78cc78, #62c462 60%, #53be53);background-image:-webkit-gradient(linear, left top, left bottom, from(#78cc78), color-stop(60%, #62c462), to(#53be53));background-image:linear-gradient(#78cc78, #62c462 60%, #53be53);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff78cc78', endColorstr='#ff53be53', GradientType=0);-webkit-filter:none;filter:none}.btn-success:hover{background-image:-webkit-linear-gradient(#2f7d2f, #379337 40%, #3da23d);background-image:-o-linear-gradient(#2f7d2f, #379337 40%, #3da23d);background-image:-webkit-gradient(linear, left top, left bottom, from(#2f7d2f), color-stop(40%, #379337), to(#3da23d));background-image:linear-gradient(#2f7d2f, #379337 40%, #3da23d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f7d2f', endColorstr='#ff3da23d', GradientType=0);-webkit-filter:none;filter:none}.btn-info{background-image:-webkit-linear-gradient(#74cae3, #5bc0de 60%, #4ab9db);background-image:-o-linear-gradient(#74cae3, #5bc0de 60%, #4ab9db);background-image:-webkit-gradient(linear, left top, left bottom, from(#74cae3), color-stop(60%, #5bc0de), to(#4ab9db));background-image:linear-gradient(#74cae3, #5bc0de 60%, #4ab9db);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff74cae3', endColorstr='#ff4ab9db', GradientType=0);-webkit-filter:none;filter:none}.btn-info:hover{background-image:-webkit-linear-gradient(#20829f, #2596b8 40%, #28a4c9);background-image:-o-linear-gradient(#20829f, #2596b8 40%, #28a4c9);background-image:-webkit-gradient(linear, left top, left bottom, from(#20829f), color-stop(40%, #2596b8), to(#28a4c9));background-image:linear-gradient(#20829f, #2596b8 40%, #28a4c9);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff20829f', endColorstr='#ff28a4c9', GradientType=0);-webkit-filter:none;filter:none}.btn-warning{background-image:-webkit-linear-gradient(#faa123, #f89406 60%, #e48806);background-image:-o-linear-gradient(#faa123, #f89406 60%, #e48806);background-image:-webkit-gradient(linear, left top, left bottom, from(#faa123), color-stop(60%, #f89406), to(#e48806));background-image:linear-gradient(#faa123, #f89406 60%, #e48806);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffaa123', endColorstr='#ffe48806', GradientType=0);-webkit-filter:none;filter:none}.btn-warning:hover{background-image:-webkit-linear-gradient(#804d03, #9e5f04 40%, #b26a04);background-image:-o-linear-gradient(#804d03, #9e5f04 40%, #b26a04);background-image:-webkit-gradient(linear, left top, left bottom, from(#804d03), color-stop(40%, #9e5f04), to(#b26a04));background-image:linear-gradient(#804d03, #9e5f04 40%, #b26a04);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff804d03', endColorstr='#ffb26a04', GradientType=0);-webkit-filter:none;filter:none}.btn-danger{background-image:-webkit-linear-gradient(#f17a77, #ee5f5b 60%, #ec4d49);background-image:-o-linear-gradient(#f17a77, #ee5f5b 60%, #ec4d49);background-image:-webkit-gradient(linear, left top, left bottom, from(#f17a77), color-stop(60%, #ee5f5b), to(#ec4d49));background-image:linear-gradient(#f17a77, #ee5f5b 60%, #ec4d49);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff17a77', endColorstr='#ffec4d49', GradientType=0);-webkit-filter:none;filter:none}.btn-danger:hover{background-image:-webkit-linear-gradient(#bb1813, #d71c16 40%, #e7201a);background-image:-o-linear-gradient(#bb1813, #d71c16 40%, #e7201a);background-image:-webkit-gradient(linear, left top, left bottom, from(#bb1813), color-stop(40%, #d71c16), to(#e7201a));background-image:linear-gradient(#bb1813, #d71c16 40%, #e7201a);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbb1813', endColorstr='#ffe7201a', GradientType=0);-webkit-filter:none;filter:none}.btn-link,.btn-link:hover{border-color:transparent}h1,h2,h3,h4,h5,h6{text-shadow:-1px -1px 0 rgba(0,0,0,0.3)}.text-primary,.text-primary:hover{color:#7a8288}.text-success,.text-success:hover{color:#62c462}.text-danger,.text-danger:hover{color:#ee5f5b}.text-warning,.text-warning:hover{color:#f89406}.text-info,.text-info:hover{color:#5bc0de}.table .success,.table .warning,.table .danger,.table .info{color:#fff}.table-bordered tbody tr.success td,.table-bordered tbody tr.warning td,.table-bordered tbody tr.danger td,.table-bordered tbody tr.success:hover td,.table-bordered tbody tr.warning:hover td,.table-bordered tbody tr.danger:hover td{border-color:#1c1e22}.table-responsive>.table{background-color:#2e3338}input,textarea{color:#272b30}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f89406}.has-warning .form-control,.has-warning .form-control:focus{border-color:#f89406}.has-warning .input-group-addon{background-color:#272b30;border:none}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#ee5f5b}.has-error .form-control,.has-error .form-control:focus{border-color:#ee5f5b}.has-error .input-group-addon{background-color:#272b30;border:none}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#62c462}.has-success .form-control,.has-success .form-control:focus{border-color:#62c462}.has-success .input-group-addon{background-color:#272b30;border:none}legend{color:#fff}.input-group-addon{border-color:rgba(0,0,0,0.6);text-shadow:1px 1px 1px rgba(0,0,0,0.3);background-image:-webkit-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-o-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3a3f44), to(#313539));background-image:linear-gradient(#484e55, #3a3f44 60%, #313539);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484e55', endColorstr='#ff313539', GradientType=0);-webkit-filter:none;filter:none;color:#ffffff}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:rgba(0,0,0,0.6)}.nav-pills>li>a{background-image:-webkit-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-o-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3a3f44), to(#313539));background-image:linear-gradient(#484e55, #3a3f44 60%, #313539);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484e55', endColorstr='#ff313539', GradientType=0);-webkit-filter:none;filter:none;border:1px solid rgba(0,0,0,0.6);text-shadow:1px 1px 1px rgba(0,0,0,0.3)}.nav-pills>li>a:hover{background-image:-webkit-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-o-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-webkit-gradient(linear, left top, left bottom, from(#020202), color-stop(40%, #101112), to(#191b1d));background-image:linear-gradient(#020202, #101112 40%, #191b1d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff020202', endColorstr='#ff191b1d', GradientType=0);-webkit-filter:none;filter:none;border:1px solid rgba(0,0,0,0.6)}.nav-pills>li.active>a,.nav-pills>li.active>a:hover{background-color:none;background-image:-webkit-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-o-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-webkit-gradient(linear, left top, left bottom, from(#020202), color-stop(40%, #101112), to(#191b1d));background-image:linear-gradient(#020202, #101112 40%, #191b1d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff020202', endColorstr='#ff191b1d', GradientType=0);-webkit-filter:none;filter:none;border:1px solid rgba(0,0,0,0.6)}.nav-pills>li.disabled>a,.nav-pills>li.disabled>a:hover{background-image:-webkit-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-o-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3a3f44), to(#313539));background-image:linear-gradient(#484e55, #3a3f44 60%, #313539);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484e55', endColorstr='#ff313539', GradientType=0);-webkit-filter:none;filter:none}.pagination>li>a,.pagination>li>span{text-shadow:1px 1px 1px rgba(0,0,0,0.3);background-image:-webkit-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-o-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3a3f44), to(#313539));background-image:linear-gradient(#484e55, #3a3f44 60%, #313539);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484e55', endColorstr='#ff313539', GradientType=0);-webkit-filter:none;filter:none}.pagination>li>a:hover,.pagination>li>span:hover{background-image:-webkit-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-o-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-webkit-gradient(linear, left top, left bottom, from(#020202), color-stop(40%, #101112), to(#191b1d));background-image:linear-gradient(#020202, #101112 40%, #191b1d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff020202', endColorstr='#ff191b1d', GradientType=0);-webkit-filter:none;filter:none}.pagination>li.active>a,.pagination>li.active>span{background-image:-webkit-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-o-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-webkit-gradient(linear, left top, left bottom, from(#020202), color-stop(40%, #101112), to(#191b1d));background-image:linear-gradient(#020202, #101112 40%, #191b1d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff020202', endColorstr='#ff191b1d', GradientType=0);-webkit-filter:none;filter:none}.pagination>li.disabled>a,.pagination>li.disabled>a:hover,.pagination>li.disabled>span,.pagination>li.disabled>span:hover{background-color:transparent;background-image:-webkit-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-o-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3a3f44), to(#313539));background-image:linear-gradient(#484e55, #3a3f44 60%, #313539);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484e55', endColorstr='#ff313539', GradientType=0);-webkit-filter:none;filter:none}.pager>li>a{background-image:-webkit-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-o-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3a3f44), to(#313539));background-image:linear-gradient(#484e55, #3a3f44 60%, #313539);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484e55', endColorstr='#ff313539', GradientType=0);-webkit-filter:none;filter:none;text-shadow:1px 1px 1px rgba(0,0,0,0.3)}.pager>li>a:hover{background-image:-webkit-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-o-linear-gradient(#020202, #101112 40%, #191b1d);background-image:-webkit-gradient(linear, left top, left bottom, from(#020202), color-stop(40%, #101112), to(#191b1d));background-image:linear-gradient(#020202, #101112 40%, #191b1d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff020202', endColorstr='#ff191b1d', GradientType=0);-webkit-filter:none;filter:none}.pager>li.disabled>a,.pager>li.disabled>a:hover{background-color:transparent;background-image:-webkit-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-o-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3a3f44), to(#313539));background-image:linear-gradient(#484e55, #3a3f44 60%, #313539);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484e55', endColorstr='#ff313539', GradientType=0);-webkit-filter:none;filter:none}.breadcrumb{border:1px solid rgba(0,0,0,0.6);text-shadow:1px 1px 1px rgba(0,0,0,0.3);background-image:-webkit-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-o-linear-gradient(#484e55, #3a3f44 60%, #313539);background-image:-webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3a3f44), to(#313539));background-image:linear-gradient(#484e55, #3a3f44 60%, #313539);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484e55', endColorstr='#ff313539', GradientType=0);-webkit-filter:none;filter:none}.alert .alert-link,.alert a{color:#fff;text-decoration:underline}.alert .close{color:#000000;text-decoration:none}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#0c0d0e}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border-color:rgba(0,0,0,0.6)}a.list-group-item-success.active{background-color:#62c462}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#4fbd4f}a.list-group-item-warning.active{background-color:#f89406}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#df8505}a.list-group-item-danger.active{background-color:#ee5f5b}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#ec4844}.jumbotron{border:1px solid rgba(0,0,0,0.6)}.panel-primary .panel-heading,.panel-success .panel-heading,.panel-danger .panel-heading,.panel-warning .panel-heading,.panel-info .panel-heading{border-color:#000} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/spacelab/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/spacelab/bootstrap.min.css deleted file mode 100644 index cc83b248cc..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/spacelab/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#666666;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#3399f3;text-decoration:none}a:hover,a:focus{color:#3399f3;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:#2d2d2d}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#446e9b}a.text-primary:hover,a.text-primary:focus{color:#345578}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-danger{color:#b94a48}a.text-danger:hover,a.text-danger:focus{color:#953b39}.bg-primary{color:#fff;background-color:#446e9b}a.bg-primary:hover,a.bg-primary:focus{background-color:#345578}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eeeeee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eeeeee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#666666;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:14px;line-height:1.42857143;color:#666666}.form-control{display:block;width:100%;height:38px;padding:8px 12px;font-size:14px;line-height:1.42857143;color:#666666;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:4px;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:38px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:54px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:54px;line-height:54px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:54px;line-height:54px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:47.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-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}.has-success .input-group-addon{color:#468847;border-color:#468847;background-color:#dff0d8}.has-success .form-control-feedback{color:#468847}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-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}.has-warning .input-group-addon{color:#c09853;border-color:#c09853;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#c09853}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;border-color:#b94a48;background-color:#f2dede}.has-error .form-control-feedback{color:#b94a48}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#a6a6a6}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:29px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19.6666662px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#474949;border-color:#474949}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#2e2f2f;border-color:#080808}.btn-default:hover{color:#ffffff;background-color:#2e2f2f;border-color:#292a2a}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#2e2f2f;border-color:#292a2a}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#1c1d1d;border-color:#080808}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#474949;border-color:#474949}.btn-default .badge{color:#474949;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#446e9b;border-color:#446e9b}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#345578;border-color:#1d2f42}.btn-primary:hover{color:#ffffff;background-color:#345578;border-color:#315070}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#345578;border-color:#315070}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#2a435f;border-color:#1d2f42}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#446e9b;border-color:#446e9b}.btn-primary .badge{color:#446e9b;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#3cb521;border-color:#3cb521}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#2e8a19;border-color:#18490d}.btn-success:hover{color:#ffffff;background-color:#2e8a19;border-color:#2b8118}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#2e8a19;border-color:#2b8118}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#246c14;border-color:#18490d}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#3cb521;border-color:#3cb521}.btn-success .badge{color:#3cb521;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#3399f3;border-color:#3399f3}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#0e80e5;border-color:#09589d}.btn-info:hover{color:#ffffff;background-color:#0e80e5;border-color:#0d7bdc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#0e80e5;border-color:#0d7bdc}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#0c6dc4;border-color:#09589d}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#3399f3;border-color:#3399f3}.btn-info .badge{color:#3399f3;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#d47500;border-color:#d47500}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#a15900;border-color:#552f00}.btn-warning:hover{color:#ffffff;background-color:#a15900;border-color:#975300}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#a15900;border-color:#975300}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#7d4500;border-color:#552f00}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#d47500;border-color:#d47500}.btn-warning .badge{color:#d47500;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#cd0200;border-color:#cd0200}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#9a0200;border-color:#4e0100}.btn-danger:hover{color:#ffffff;background-color:#9a0200;border-color:#900100}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#9a0200;border-color:#900100}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#760100;border-color:#4e0100}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#cd0200;border-color:#cd0200}.btn-danger .badge{color:#cd0200;background-color:#ffffff}.btn-link{color:#3399f3;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#3399f3;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:14px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#446e9b}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#446e9b}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999999;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:54px;line-height:54px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:14px;font-weight:normal;line-height:1;color:#666666;text-align:center;background-color:#eeeeee;border:1px solid #cccccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#3399f3}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#666666;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#446e9b}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:6px;margin-bottom:6px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:6px;margin-bottom:6px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#eeeeee;border-color:#dddddd}.navbar-default .navbar-brand{color:#777777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#3399f3;background-color:transparent}.navbar-default .navbar-text{color:#777777}.navbar-default .navbar-nav>li>a{color:#777777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#3399f3;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#3399f3;background-color:transparent}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-default .navbar-toggle{border-color:#dddddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#dddddd}.navbar-default .navbar-toggle .icon-bar{background-color:#cccccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#dddddd}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:transparent;color:#3399f3}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#3399f3;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#3399f3;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-default .navbar-link{color:#777777}.navbar-default .navbar-link:hover{color:#3399f3}.navbar-default .btn-link{color:#777777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#3399f3}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#444444}.navbar-inverse{background-color:#446e9b;border-color:#345578}.navbar-inverse .navbar-brand{color:#dddddd}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#dddddd}.navbar-inverse .navbar-nav>li>a{color:#dddddd}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#345578}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#345578}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#395c82}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:transparent;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#345578}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#345578}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#dddddd}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-link{color:#dddddd}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#dddddd}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#3399f3;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#3399f3;background-color:#eeeeee;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.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:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#474949}.label-default[href]:hover,.label-default[href]:focus{background-color:#2e2f2f}.label-primary{background-color:#446e9b}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#345578}.label-success{background-color:#3cb521}.label-success[href]:hover,.label-success[href]:focus{background-color:#2e8a19}.label-info{background-color:#3399f3}.label-info[href]:hover,.label-info[href]:focus{background-color:#0e80e5}.label-warning{background-color:#d47500}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#a15900}.label-danger{background-color:#cd0200}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#9a0200}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#3399f3;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#3399f3;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eeeeee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#3399f3}.thumbnail .caption{padding:9px;color:#666666}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{background-color:#fcf8e3;border-color:#fbeed5;color:#c09853}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 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:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#446e9b;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3cb521}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#3399f3}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#d47500}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#cd0200}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#446e9b;border-color:#446e9b}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c5d5e6}.list-group-item-success{color:#468847;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#468847}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}.list-group-item-info{color:#3a87ad;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#3a87ad}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}.list-group-item-warning{color:#c09853;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#c09853}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}.list-group-item-danger{color:#b94a48;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#b94a48}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#446e9b}.panel-primary>.panel-heading{color:#ffffff;background-color:#446e9b;border-color:#446e9b}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#446e9b}.panel-primary>.panel-heading .badge{color:#446e9b;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#446e9b}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#468847}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#3a87ad}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#fbeed5}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#c09853}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#eed3d7}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#b94a48}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#eed3d7}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-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-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#000000;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:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.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:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{background-image:-webkit-linear-gradient(#fff, #eee 50%, #e4e4e4);background-image:-o-linear-gradient(#fff, #eee 50%, #e4e4e4);background-image:-webkit-gradient(linear, left top, left bottom, from(#fff), color-stop(50%, #eee), to(#e4e4e4));background-image:linear-gradient(#fff, #eee 50%, #e4e4e4);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe4e4e4', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #d5d5d5;text-shadow:0 1px 0 rgba(255,255,255,0.3)}.navbar-inverse{background-image:-webkit-linear-gradient(#6d94bf, #446e9b 50%, #3e648d);background-image:-o-linear-gradient(#6d94bf, #446e9b 50%, #3e648d);background-image:-webkit-gradient(linear, left top, left bottom, from(#6d94bf), color-stop(50%, #446e9b), to(#3e648d));background-image:linear-gradient(#6d94bf, #446e9b 50%, #3e648d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff6d94bf', endColorstr='#ff3e648d', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #345578;text-shadow:0 -1px 0 rgba(0,0,0,0.3)}.navbar-inverse .badge{background-color:#fff;color:#446e9b}.navbar .badge{text-shadow:none}.navbar-nav>li>a,.navbar-nav>li>a:hover{padding-top:17px;padding-bottom:13px;-webkit-transition:color ease-in-out .2s;-o-transition:color ease-in-out .2s;transition:color ease-in-out .2s}.navbar-brand,.navbar-brand:hover{-webkit-transition:color ease-in-out .2s;-o-transition:color ease-in-out .2s;transition:color ease-in-out .2s}.navbar .caret,.navbar .caret:hover{-webkit-transition:border-color ease-in-out .2s;-o-transition:border-color ease-in-out .2s;transition:border-color ease-in-out .2s}.navbar .dropdown-menu{text-shadow:none}.btn{text-shadow:0 -1px 0 rgba(0,0,0,0.3)}.btn-default{background-image:-webkit-linear-gradient(#6d7070, #474949 50%, #3d3f3f);background-image:-o-linear-gradient(#6d7070, #474949 50%, #3d3f3f);background-image:-webkit-gradient(linear, left top, left bottom, from(#6d7070), color-stop(50%, #474949), to(#3d3f3f));background-image:linear-gradient(#6d7070, #474949 50%, #3d3f3f);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff6d7070', endColorstr='#ff3d3f3f', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #2e2f2f}.btn-default:hover{background-image:-webkit-linear-gradient(#636565, #3d3f3f 50%, #333434);background-image:-o-linear-gradient(#636565, #3d3f3f 50%, #333434);background-image:-webkit-gradient(linear, left top, left bottom, from(#636565), color-stop(50%, #3d3f3f), to(#333434));background-image:linear-gradient(#636565, #3d3f3f 50%, #333434);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff636565', endColorstr='#ff333434', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #242525}.btn-primary{background-image:-webkit-linear-gradient(#6d94bf, #446e9b 50%, #3e648d);background-image:-o-linear-gradient(#6d94bf, #446e9b 50%, #3e648d);background-image:-webkit-gradient(linear, left top, left bottom, from(#6d94bf), color-stop(50%, #446e9b), to(#3e648d));background-image:linear-gradient(#6d94bf, #446e9b 50%, #3e648d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff6d94bf', endColorstr='#ff3e648d', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #345578}.btn-primary:hover{background-image:-webkit-linear-gradient(#5f8ab9, #3e648d 50%, #385a7f);background-image:-o-linear-gradient(#5f8ab9, #3e648d 50%, #385a7f);background-image:-webkit-gradient(linear, left top, left bottom, from(#5f8ab9), color-stop(50%, #3e648d), to(#385a7f));background-image:linear-gradient(#5f8ab9, #3e648d 50%, #385a7f);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5f8ab9', endColorstr='#ff385a7f', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #2e4b69}.btn-success{background-image:-webkit-linear-gradient(#61dd45, #3cb521 50%, #36a41e);background-image:-o-linear-gradient(#61dd45, #3cb521 50%, #36a41e);background-image:-webkit-gradient(linear, left top, left bottom, from(#61dd45), color-stop(50%, #3cb521), to(#36a41e));background-image:linear-gradient(#61dd45, #3cb521 50%, #36a41e);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff61dd45', endColorstr='#ff36a41e', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #2e8a19}.btn-success:hover{background-image:-webkit-linear-gradient(#52da34, #36a41e 50%, #31921b);background-image:-o-linear-gradient(#52da34, #36a41e 50%, #31921b);background-image:-webkit-gradient(linear, left top, left bottom, from(#52da34), color-stop(50%, #36a41e), to(#31921b));background-image:linear-gradient(#52da34, #36a41e 50%, #31921b);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff52da34', endColorstr='#ff31921b', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #287916}.btn-info{background-image:-webkit-linear-gradient(#7bbdf7, #3399f3 50%, #208ff2);background-image:-o-linear-gradient(#7bbdf7, #3399f3 50%, #208ff2);background-image:-webkit-gradient(linear, left top, left bottom, from(#7bbdf7), color-stop(50%, #3399f3), to(#208ff2));background-image:linear-gradient(#7bbdf7, #3399f3 50%, #208ff2);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff7bbdf7', endColorstr='#ff208ff2', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #0e80e5}.btn-info:hover{background-image:-webkit-linear-gradient(#68b3f6, #208ff2 50%, #0e86ef);background-image:-o-linear-gradient(#68b3f6, #208ff2 50%, #0e86ef);background-image:-webkit-gradient(linear, left top, left bottom, from(#68b3f6), color-stop(50%, #208ff2), to(#0e86ef));background-image:linear-gradient(#68b3f6, #208ff2 50%, #0e86ef);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff68b3f6', endColorstr='#ff0e86ef', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #0c75d2}.btn-warning{background-image:-webkit-linear-gradient(#ff9c21, #d47500 50%, #c06a00);background-image:-o-linear-gradient(#ff9c21, #d47500 50%, #c06a00);background-image:-webkit-gradient(linear, left top, left bottom, from(#ff9c21), color-stop(50%, #d47500), to(#c06a00));background-image:linear-gradient(#ff9c21, #d47500 50%, #c06a00);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff9c21', endColorstr='#ffc06a00', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #a15900}.btn-warning:hover{background-image:-webkit-linear-gradient(#ff930d, #c06a00 50%, #ab5e00);background-image:-o-linear-gradient(#ff930d, #c06a00 50%, #ab5e00);background-image:-webkit-gradient(linear, left top, left bottom, from(#ff930d), color-stop(50%, #c06a00), to(#ab5e00));background-image:linear-gradient(#ff930d, #c06a00 50%, #ab5e00);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff930d', endColorstr='#ffab5e00', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #8d4e00}.btn-danger{background-image:-webkit-linear-gradient(#ff1d1b, #cd0200 50%, #b90200);background-image:-o-linear-gradient(#ff1d1b, #cd0200 50%, #b90200);background-image:-webkit-gradient(linear, left top, left bottom, from(#ff1d1b), color-stop(50%, #cd0200), to(#b90200));background-image:linear-gradient(#ff1d1b, #cd0200 50%, #b90200);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff1d1b', endColorstr='#ffb90200', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #9a0200}.btn-danger:hover{background-image:-webkit-linear-gradient(#ff0906, #b90200 50%, #a40200);background-image:-o-linear-gradient(#ff0906, #b90200 50%, #a40200);background-image:-webkit-gradient(linear, left top, left bottom, from(#ff0906), color-stop(50%, #b90200), to(#a40200));background-image:linear-gradient(#ff0906, #b90200 50%, #a40200);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff0906', endColorstr='#ffa40200', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #860100}.btn-link{text-shadow:none}.btn:active,.btn.active{background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.panel-primary .panel-title{color:#fff} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/superhero/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/superhero/bootstrap.min.css deleted file mode 100644 index 7bbc5e2e6e..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/superhero/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Lato:300,400,700");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#ebebeb;background-color:#2b3e50}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#df691a;text-decoration:none}a:hover,a:focus{color:#df691a;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#2b3e50;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #596a7b}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:300;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#ebebeb}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#f0ad4e;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#4e5d6c}.text-primary{color:#df691a}a.text-primary:hover,a.text-primary:focus{color:#b15315}.text-success{color:#ebebeb}a.text-success:hover,a.text-success:focus{color:#d2d2d2}.text-info{color:#ebebeb}a.text-info:hover,a.text-info:focus{color:#d2d2d2}.text-warning{color:#ebebeb}a.text-warning:hover,a.text-warning:focus{color:#d2d2d2}.text-danger{color:#ebebeb}a.text-danger:hover,a.text-danger:focus{color:#d2d2d2}.bg-primary{color:#fff;background-color:#df691a}a.bg-primary:hover,a.bg-primary:focus{background-color:#b15315}.bg-success{background-color:#5cb85c}a.bg-success:hover,a.bg-success:focus{background-color:#449d44}.bg-info{background-color:#5bc0de}a.bg-info:hover,a.bg-info:focus{background-color:#31b0d5}.bg-warning{background-color:#f0ad4e}a.bg-warning:hover,a.bg-warning:focus{background-color:#ec971f}.bg-danger{background-color:#d9534f}a.bg-danger:hover,a.bg-danger:focus{background-color:#c9302c}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #ebebeb}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #4e5d6c}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #4e5d6c}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#ebebeb}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #4e5d6c;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:6px;padding-bottom:6px;color:#4e5d6c;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:6px;line-height:1.42857143;vertical-align:top;border-top:1px solid #4e5d6c}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #4e5d6c}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #4e5d6c}.table .table{background-color:#2b3e50}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:3px}.table-bordered{border:1px solid #4e5d6c}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #4e5d6c}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#4e5d6c}.table-hover>tbody>tr:hover{background-color:#485563}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#485563}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#3d4954}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#5cb85c}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#4cae4c}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#5bc0de}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#46b8da}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#f0ad4e}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#eea236}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#d9534f}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#d43f3a}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #4e5d6c}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#ebebeb;border:0;border-bottom:1px solid #4e5d6c}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:15px;line-height:1.42857143;color:#2b3e50}.form-control{display:block;width:100%;height:39px;padding:8px 16px;font-size:15px;line-height:1.42857143;color:#2b3e50;background-color:#ffffff;background-image:none;border:1px solid transparent;border-radius:0;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:transparent;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6)}.form-control::-moz-placeholder{color:#cccccc;opacity:1}.form-control:-ms-input-placeholder{color:#cccccc}.form-control::-webkit-input-placeholder{color:#cccccc}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#ebebeb;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:39px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:31px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:52px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-sm{height:31px;line-height:31px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.form-group-sm select.form-control{height:31px;line-height:31px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:31px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.5}.input-lg{height:52px;padding:12px 24px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:52px;line-height:52px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:52px;padding:12px 24px;font-size:19px;line-height:1.3333333;border-radius:0}.form-group-lg select.form-control{height:52px;line-height:52px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:52px;min-height:40px;padding:13px 24px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:48.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:39px;height:39px;line-height:39px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:52px;height:52px;line-height:52px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:31px;height:31px;line-height:31px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ebebeb}.has-success .form-control{border-color:#ebebeb;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#d2d2d2;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ebebeb;border-color:#ebebeb;background-color:#5cb85c}.has-success .form-control-feedback{color:#ebebeb}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ebebeb}.has-warning .form-control{border-color:#ebebeb;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#d2d2d2;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ebebeb;border-color:#ebebeb;background-color:#f0ad4e}.has-warning .form-control-feedback{color:#ebebeb}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ebebeb}.has-error .form-control{border-color:#ebebeb;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#d2d2d2;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ebebeb;border-color:#ebebeb;background-color:#d9534f}.has-error .form-control-feedback{color:#ebebeb}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#ffffff}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:30px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:16.9999996px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 16px;font-size:15px;line-height:1.42857143;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#4e5d6c;border-color:transparent}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#39444e;border-color:rgba(0,0,0,0)}.btn-default:hover{color:#ffffff;background-color:#39444e;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#39444e;border-color:rgba(0,0,0,0)}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#2a323a;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#4e5d6c;border-color:transparent}.btn-default .badge{color:#4e5d6c;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#df691a;border-color:transparent}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#b15315;border-color:rgba(0,0,0,0)}.btn-primary:hover{color:#ffffff;background-color:#b15315;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#b15315;border-color:rgba(0,0,0,0)}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#914411;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#df691a;border-color:transparent}.btn-primary .badge{color:#df691a;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#5cb85c;border-color:transparent}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#449d44;border-color:rgba(0,0,0,0)}.btn-success:hover{color:#ffffff;background-color:#449d44;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#449d44;border-color:rgba(0,0,0,0)}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#398439;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:transparent}.btn-success .badge{color:#5cb85c;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#5bc0de;border-color:transparent}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#31b0d5;border-color:rgba(0,0,0,0)}.btn-info:hover{color:#ffffff;background-color:#31b0d5;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#31b0d5;border-color:rgba(0,0,0,0)}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#269abc;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:transparent}.btn-info .badge{color:#5bc0de;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f0ad4e;border-color:transparent}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#ec971f;border-color:rgba(0,0,0,0)}.btn-warning:hover{color:#ffffff;background-color:#ec971f;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#ec971f;border-color:rgba(0,0,0,0)}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#d58512;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:transparent}.btn-warning .badge{color:#f0ad4e;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#d9534f;border-color:transparent}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:hover{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#ac2925;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:transparent}.btn-danger .badge{color:#d9534f;background-color:#ffffff}.btn-link{color:#df691a;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#df691a;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#4e5d6c;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:12px 24px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:15px;text-align:left;background-color:#4e5d6c;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#2b3e50}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#ebebeb;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ebebeb;background-color:#485563}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#df691a}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#2b3e50}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#2b3e50;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:52px;padding:12px 24px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:52px;line-height:52px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:31px;line-height:31px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 16px;font-size:15px;font-weight:normal;line-height:1;color:#2b3e50;text-align:center;background-color:#4e5d6c;border:1px solid transparent;border-radius:0}.input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:0}.input-group-addon.input-lg{padding:12px 24px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#4e5d6c}.nav>li.disabled>a{color:#4e5d6c}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#4e5d6c;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#4e5d6c;border-color:#df691a}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid transparent}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#4e5d6c #4e5d6c transparent}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#ebebeb;background-color:#2b3e50;border:1px solid #4e5d6c;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #4e5d6c}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #4e5d6c;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#4e5d6c}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#df691a}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #4e5d6c}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #4e5d6c;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#4e5d6c}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:40px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:9.5px 15px;font-size:19px;line-height:21px;height:40px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:4.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:9.5px;padding-bottom:9.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:0.5px;margin-bottom:0.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:0.5px;margin-bottom:0.5px}.navbar-btn.btn-sm{margin-top:4.5px;margin-bottom:4.5px}.navbar-btn.btn-xs{margin-top:9px;margin-bottom:9px}.navbar-text{margin-top:9.5px;margin-bottom:9.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#4e5d6c;border-color:transparent}.navbar-default .navbar-brand{color:#ebebeb}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ebebeb;background-color:transparent}.navbar-default .navbar-text{color:#ebebeb}.navbar-default .navbar-nav>li>a{color:#ebebeb}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ebebeb;background-color:#485563}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ebebeb;background-color:#485563}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#485563}.navbar-default .navbar-toggle .icon-bar{background-color:#ebebeb}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#485563;color:#ebebeb}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ebebeb}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ebebeb;background-color:#485563}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ebebeb;background-color:#485563}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ebebeb}.navbar-default .navbar-link:hover{color:#ebebeb}.navbar-default .btn-link{color:#ebebeb}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ebebeb}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#df691a;border-color:transparent}.navbar-inverse .navbar-brand{color:#ebebeb}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ebebeb;background-color:transparent}.navbar-inverse .navbar-text{color:#ebebeb}.navbar-inverse .navbar-nav>li>a{color:#ebebeb}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ebebeb;background-color:#c85e17}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ebebeb;background-color:#c85e17}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#c85e17}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ebebeb}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#bf5a16}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#c85e17;color:#ebebeb}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ebebeb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ebebeb;background-color:#c85e17}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ebebeb;background-color:#c85e17}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ebebeb}.navbar-inverse .navbar-link:hover{color:#ebebeb}.navbar-inverse .btn-link{color:#ebebeb}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ebebeb}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#4e5d6c;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ebebeb}.breadcrumb>.active{color:#ebebeb}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 16px;line-height:1.42857143;text-decoration:none;color:#ebebeb;background-color:#4e5d6c;border:1px solid transparent;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#ebebeb;background-color:#485563;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#ebebeb;background-color:#df691a;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#323c46;background-color:#4e5d6c;border-color:transparent;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:12px 24px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#4e5d6c;border:1px solid transparent;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#485563}.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:#323c46;background-color:#4e5d6c;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#4e5d6c}.label-default[href]:hover,.label-default[href]:focus{background-color:#39444e}.label-primary{background-color:#df691a}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#b15315}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:300;color:#ebebeb;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#4e5d6c;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#df691a;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#4e5d6c}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#39444e}.container .jumbotron,.container-fluid .jumbotron{border-radius:0}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#2b3e50;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#df691a}.thumbnail .caption{padding:9px;color:#ebebeb}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#5cb85c;border-color:transparent;color:#ebebeb}.alert-success hr{border-top-color:rgba(0,0,0,0)}.alert-success .alert-link{color:#d2d2d2}.alert-info{background-color:#5bc0de;border-color:transparent;color:#ebebeb}.alert-info hr{border-top-color:rgba(0,0,0,0)}.alert-info .alert-link{color:#d2d2d2}.alert-warning{background-color:#f0ad4e;border-color:transparent;color:#ebebeb}.alert-warning hr{border-top-color:rgba(0,0,0,0)}.alert-warning .alert-link{color:#d2d2d2}.alert-danger{background-color:#d9534f;border-color:transparent;color:#ebebeb}.alert-danger hr{border-top-color:rgba(0,0,0,0)}.alert-danger .alert-link{color:#d2d2d2}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#4e5d6c;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#df691a;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#4e5d6c;border:1px solid transparent}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#ebebeb}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#ebebeb}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#ebebeb;background-color:#485563}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#ebebeb;color:#4e5d6c;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#4e5d6c}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#df691a;border-color:#df691a}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#f9decc}.list-group-item-success{color:#ebebeb;background-color:#5cb85c}a.list-group-item-success,button.list-group-item-success{color:#ebebeb}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ebebeb;background-color:#4cae4c}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ebebeb;border-color:#ebebeb}.list-group-item-info{color:#ebebeb;background-color:#5bc0de}a.list-group-item-info,button.list-group-item-info{color:#ebebeb}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ebebeb;background-color:#46b8da}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ebebeb;border-color:#ebebeb}.list-group-item-warning{color:#ebebeb;background-color:#f0ad4e}a.list-group-item-warning,button.list-group-item-warning{color:#ebebeb}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ebebeb;background-color:#eea236}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ebebeb;border-color:#ebebeb}.list-group-item-danger{color:#ebebeb;background-color:#d9534f}a.list-group-item-danger,button.list-group-item-danger{color:#ebebeb}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ebebeb;background-color:#d43f3a}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ebebeb;border-color:#ebebeb}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#4e5d6c;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#485563;border-top:1px solid transparent;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #4e5d6c}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid transparent}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid transparent}.panel-default{border-color:transparent}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:transparent}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-primary{border-color:transparent}.panel-primary>.panel-heading{color:#ffffff;background-color:#df691a;border-color:transparent}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-primary>.panel-heading .badge{color:#df691a;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-success{border-color:transparent}.panel-success>.panel-heading{color:#ebebeb;background-color:#5cb85c;border-color:transparent}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-success>.panel-heading .badge{color:#5cb85c;background-color:#ebebeb}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-info{border-color:transparent}.panel-info>.panel-heading{color:#ebebeb;background-color:#5bc0de;border-color:transparent}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-info>.panel-heading .badge{color:#5bc0de;background-color:#ebebeb}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-warning{border-color:transparent}.panel-warning>.panel-heading{color:#ebebeb;background-color:#f0ad4e;border-color:transparent}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-warning>.panel-heading .badge{color:#f0ad4e;background-color:#ebebeb}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-danger{border-color:transparent}.panel-danger>.panel-heading{color:#ebebeb;background-color:#d9534f;border-color:transparent}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-danger>.panel-heading .badge{color:#d9534f;background-color:#ebebeb}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#4e5d6c;border:1px solid transparent;border-radius:0;-webkit-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-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ebebeb;text-shadow:none;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ebebeb;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#4e5d6c;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #2b3e50;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #2b3e50}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:0}.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:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#4e5d6c;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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:15px;background-color:#485563;border-bottom:1px solid #3d4954;border-radius:-1 -1 0 0}.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:transparent;bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#4e5d6c}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:transparent}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#4e5d6c}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:transparent;top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#4e5d6c}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:transparent}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#4e5d6c;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{-webkit-box-shadow:none;box-shadow:none;border:none;font-size:12px}.navbar-default .badge{background-color:#fff;color:#4e5d6c}.navbar-inverse .badge{background-color:#fff;color:#df691a}.btn{font-weight:300}.btn-default:hover{background-color:#485563}.btn-sm,.btn-xs{font-size:12px}body{font-weight:300}.text-primary,.text-primary:hover{color:#df691a}.text-success,.text-success:hover{color:#5cb85c}.text-danger,.text-danger:hover{color:#d9534f}.text-warning,.text-warning:hover{color:#f0ad4e}.text-info,.text-info:hover{color:#5bc0de}.page-header{border-bottom-color:#4e5d6c}.dropdown-menu{border:none;margin:0;-webkit-box-shadow:none;box-shadow:none}.dropdown-menu>li>a{font-size:12px;font-weight:300}.btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.dropdown-header{font-size:12px}table,.table{font-size:12px}table a:not(.btn),.table a:not(.btn){color:#fff;text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .text-muted,.table .text-muted{color:#4e5d6c}table>thead>tr>th,.table>thead>tr>th,table>tbody>tr>th,.table>tbody>tr>th,table>tfoot>tr>th,.table>tfoot>tr>th,table>thead>tr>td,.table>thead>tr>td,table>tbody>tr>td,.table>tbody>tr>td,table>tfoot>tr>td,.table>tfoot>tr>td{border-color:transparent}input,textarea{color:#2b3e50}label,.radio label,.checkbox label,.help-block{font-size:12px;font-weight:300}.input-addon,.input-group-addon{color:#ebebeb}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f0ad4e}.has-warning .input-group-addon{border:none}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#d9534f}.has-error .input-group-addon{border:none}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#5cb85c}.has-success .input-group-addon{border:none}.form-control:focus{-webkit-box-shadow:none;box-shadow:none}.has-warning .form-control:focus,.has-error .form-control:focus,.has-success .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:transparent}.nav-tabs>li>a{color:#ebebeb}.nav-pills>li>a{color:#ebebeb}.pager a{color:#ebebeb}.label{font-weight:300}.alert{color:#fff}.alert a,.alert .alert-link{color:#fff}.close{opacity:0.4}.close:hover,.close:focus{opacity:1}.well{-webkit-box-shadow:none;box-shadow:none}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border:none}a.list-group-item-success.active{background-color:#5cb85c}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#4cae4c}a.list-group-item-warning.active{background-color:#f0ad4e}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#eea236}a.list-group-item-danger.active{background-color:#d9534f}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#d43f3a}.panel{border:none}.panel-default>.panel-heading{background-color:#485563;color:#ebebeb}.thumbnail{background-color:#4e5d6c;border:none}.modal{padding:0}.modal-header,.modal-footer{background-color:#485563;border:none;border-radius:0}.popover-title{border:none} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/united/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/united/bootstrap.min.css deleted file mode 100644 index 7791912a3b..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/united/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Ubuntu:400,700");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Ubuntu",Tahoma,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333333;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#dd4814;text-decoration:none}a:hover,a:focus{color:#97310e;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Ubuntu",Tahoma,"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#aea79f}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#aea79f}.text-primary{color:#dd4814}a.text-primary:hover,a.text-primary:focus{color:#ae3910}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-danger{color:#b94a48}a.text-danger:hover,a.text-danger:focus{color:#953b39}.bg-primary{color:#fff;background-color:#dd4814}a.bg-primary:hover,a.bg-primary:focus{background-color:#ae3910}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eeeeee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #aea79f}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eeeeee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#aea79f}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#aea79f;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:14px;line-height:1.42857143;color:#333333}.form-control{display:block;width:100%;height:38px;padding:8px 12px;font-size:14px;line-height:1.42857143;color:#333333;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:4px;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#aea79f;opacity:1}.form-control:-ms-input-placeholder{color:#aea79f}.form-control::-webkit-input-placeholder{color:#aea79f}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:38px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:54px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:54px;line-height:54px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:54px;line-height:54px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:47.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-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}.has-success .input-group-addon{color:#468847;border-color:#468847;background-color:#dff0d8}.has-success .form-control-feedback{color:#468847}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-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}.has-warning .input-group-addon{color:#c09853;border-color:#c09853;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#c09853}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;border-color:#b94a48;background-color:#f2dede}.has-error .form-control-feedback{color:#b94a48}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:29px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19.6666662px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#aea79f;border-color:#aea79f}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#978e83;border-color:#6f675e}.btn-default:hover{color:#ffffff;background-color:#978e83;border-color:#92897e}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#978e83;border-color:#92897e}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#867c71;border-color:#6f675e}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#aea79f;border-color:#aea79f}.btn-default .badge{color:#aea79f;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#dd4814;border-color:#dd4814}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#ae3910;border-color:#682209}.btn-primary:hover{color:#ffffff;background-color:#ae3910;border-color:#a5360f}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#ae3910;border-color:#a5360f}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#8d2e0d;border-color:#682209}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#dd4814;border-color:#dd4814}.btn-primary .badge{color:#dd4814;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#38b44a;border-color:#38b44a}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#2c8d3a;border-color:#1a5322}.btn-success:hover{color:#ffffff;background-color:#2c8d3a;border-color:#298537}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#2c8d3a;border-color:#298537}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#23722f;border-color:#1a5322}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#38b44a;border-color:#38b44a}.btn-success .badge{color:#38b44a;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#772953;border-color:#772953}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#511c39;border-color:#180811}.btn-info:hover{color:#ffffff;background-color:#511c39;border-color:#491933}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#511c39;border-color:#491933}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#371326;border-color:#180811}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#772953;border-color:#772953}.btn-info .badge{color:#772953;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#efb73e;border-color:#efb73e}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#e7a413;border-color:#a0720d}.btn-warning:hover{color:#ffffff;background-color:#e7a413;border-color:#dd9d12}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#e7a413;border-color:#dd9d12}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#c68c10;border-color:#a0720d}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#efb73e;border-color:#efb73e}.btn-warning .badge{color:#efb73e;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#df382c;border-color:#df382c}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#bc271c;border-color:#791912}.btn-danger:hover{color:#ffffff;background-color:#bc271c;border-color:#b3251b}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#bc271c;border-color:#b3251b}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#9d2118;border-color:#791912}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#df382c;border-color:#df382c}.btn-danger .badge{color:#df382c;background-color:#ffffff}.btn-link{color:#dd4814;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#97310e;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#aea79f;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:14px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#dd4814}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#dd4814}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#aea79f}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#aea79f;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:54px;line-height:54px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:14px;font-weight:normal;line-height:1;color:#333333;text-align:center;background-color:#eeeeee;border:1px solid #cccccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#aea79f}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#aea79f;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#dd4814}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#777777;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#dd4814}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:6px;margin-bottom:6px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:6px;margin-bottom:6px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#dd4814;border-color:#bf3e11}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#97310e}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#ae3910}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#97310e}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#97310e}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#bf3e11}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#ae3910;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#97310e}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#ae3910}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#772953;border-color:#511c39}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#3e152b}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#511c39}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#3e152b}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#3e152b}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#5c2040}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#511c39;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#511c39}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#511c39}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#3e152b}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#511c39}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#aea79f}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#dd4814;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#97310e;background-color:#eeeeee;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#aea79f;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#aea79f;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.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:#aea79f;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#aea79f}.label-default[href]:hover,.label-default[href]:focus{background-color:#978e83}.label-primary{background-color:#dd4814}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#ae3910}.label-success{background-color:#38b44a}.label-success[href]:hover,.label-success[href]:focus{background-color:#2c8d3a}.label-info{background-color:#772953}.label-info[href]:hover,.label-info[href]:focus{background-color:#511c39}.label-warning{background-color:#efb73e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#e7a413}.label-danger{background-color:#df382c}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#bc271c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#aea79f;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#dd4814;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eeeeee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#dd4814}.thumbnail .caption{padding:9px;color:#333333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{background-color:#fcf8e3;border-color:#fbeed5;color:#c09853}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 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:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#dd4814;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#38b44a}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#772953}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#efb73e}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#df382c}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#aea79f;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#aea79f}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#dd4814;border-color:#dd4814}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#fad1c3}.list-group-item-success{color:#468847;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#468847}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}.list-group-item-info{color:#3a87ad;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#3a87ad}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}.list-group-item-warning{color:#c09853;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#c09853}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}.list-group-item-danger{color:#b94a48;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#b94a48}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#dd4814}.panel-primary>.panel-heading{color:#ffffff;background-color:#dd4814;border-color:#dd4814}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dd4814}.panel-primary>.panel-heading .badge{color:#dd4814;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dd4814}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#468847}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#3a87ad}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#fbeed5}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#c09853}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#eed3d7}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#b94a48}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#eed3d7}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-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-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Ubuntu",Tahoma,"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#000000;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:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Ubuntu",Tahoma,"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.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:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar-default .badge{background-color:#fff;color:#dd4814}.navbar-inverse .badge{background-color:#fff;color:#772953}@media (max-width:767px){.navbar .dropdown-menu a{color:#fff}} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/yeti/bootstrap.min.css b/mayan/apps/appearance/static/appearance/packages/bootswatch.com/yeti/bootstrap.min.css deleted file mode 100644 index 1bb3af7e9c..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/bootswatch.com/yeti/bootstrap.min.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,700italic,400,300,700");/*! - * bootswatch v3.3.5 - * Homepage: http://bootswatch.com - * Copyright 2012-2015 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*//*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#222222;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#008cba;text-decoration:none}a:hover,a:focus{color:#008cba;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.4;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #dddddd}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:80%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#008cba}a.text-primary:hover,a.text-primary:focus{color:#006687}.text-success{color:#43ac6a}a.text-success:hover,a.text-success:focus{color:#358753}.text-info{color:#5bc0de}a.text-info:hover,a.text-info:focus{color:#31b0d5}.text-warning{color:#e99002}a.text-warning:hover,a.text-warning:focus{color:#b67102}.text-danger{color:#f04124}a.text-danger:hover,a.text-danger:focus{color:#d32a0e}.bg-primary{color:#fff;background-color:#008cba}a.bg-primary:hover,a.bg-primary:focus{background-color:#006687}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #dddddd}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.4}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.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}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #dddddd}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.4;color:#6f6f6f}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #dddddd;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.4}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.4;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.4;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:15px;line-height:1.4;color:#6f6f6f}.form-control{display:block;width:100%;height:39px;padding:8px 12px;font-size:15px;line-height:1.4;color:#6f6f6f;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:0;-webkit-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-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:39px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:36px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:60px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:36px;padding:8px 12px;font-size:12px;line-height:1.5;border-radius:0}select.input-sm{height:36px;line-height:36px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:36px;padding:8px 12px;font-size:12px;line-height:1.5;border-radius:0}.form-group-sm select.form-control{height:36px;line-height:36px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:36px;min-height:33px;padding:9px 12px;font-size:12px;line-height:1.5}.input-lg{height:60px;padding:16px 20px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:60px;line-height:60px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:60px;padding:16px 20px;font-size:19px;line-height:1.3333333;border-radius:0}.form-group-lg select.form-control{height:60px;line-height:60px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:60px;min-height:40px;padding:17px 20px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:48.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:39px;height:39px;line-height:39px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:60px;height:60px;line-height:60px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:36px;height:36px;line-height:36px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#43ac6a}.has-success .form-control{border-color:#43ac6a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#358753;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #85d0a1;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #85d0a1}.has-success .input-group-addon{color:#43ac6a;border-color:#43ac6a;background-color:#dff0d8}.has-success .form-control-feedback{color:#43ac6a}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#e99002}.has-warning .form-control{border-color:#e99002;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#b67102;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #febc53;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #febc53}.has-warning .input-group-addon{color:#e99002;border-color:#e99002;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#e99002}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#f04124}.has-error .form-control{border-color:#f04124;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#d32a0e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f79483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f79483}.has-error .input-group-addon{color:#f04124;border-color:#f04124;background-color:#f2dede}.has-error .form-control-feedback{color:#f04124}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#626262}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:30px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:22.3333328px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:9px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:15px;line-height:1.4;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333333;background-color:#e7e7e7;border-color:#cccccc}.btn-default:focus,.btn-default.focus{color:#333333;background-color:#cecece;border-color:#8c8c8c}.btn-default:hover{color:#333333;background-color:#cecece;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333333;background-color:#cecece;border-color:#adadad}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#333333;background-color:#bcbcbc;border-color:#8c8c8c}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#e7e7e7;border-color:#cccccc}.btn-default .badge{color:#e7e7e7;background-color:#333333}.btn-primary{color:#ffffff;background-color:#008cba;border-color:#0079a1}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#006687;border-color:#001921}.btn-primary:hover{color:#ffffff;background-color:#006687;border-color:#004b63}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#006687;border-color:#004b63}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#004b63;border-color:#001921}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#008cba;border-color:#0079a1}.btn-primary .badge{color:#008cba;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#43ac6a;border-color:#3c9a5f}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#358753;border-color:#183e26}.btn-success:hover{color:#ffffff;background-color:#358753;border-color:#2b6e44}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#358753;border-color:#2b6e44}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#2b6e44;border-color:#183e26}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#43ac6a;border-color:#3c9a5f}.btn-success .badge{color:#43ac6a;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#ffffff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#e99002;border-color:#d08002}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#b67102;border-color:#513201}.btn-warning:hover{color:#ffffff;background-color:#b67102;border-color:#935b01}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#b67102;border-color:#935b01}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#935b01;border-color:#513201}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#e99002;border-color:#d08002}.btn-warning .badge{color:#e99002;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#f04124;border-color:#ea2f10}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#d32a0e;border-color:#731708}.btn-danger:hover{color:#ffffff;background-color:#d32a0e;border-color:#b1240c}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#d32a0e;border-color:#b1240c}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#b1240c;border-color:#731708}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#f04124;border-color:#ea2f10}.btn-danger .badge{color:#f04124;background-color:#ffffff}.btn-link{color:#008cba;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#008cba;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:16px 20px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:8px 12px;font-size:12px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:4px 6px;font-size:12px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.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;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:rgba(0,0,0,0.2)}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.4;color:#555555;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#eeeeee}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#008cba}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.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:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.4;color:#999999;white-space:nowrap}.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 dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:60px;padding:16px 20px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:60px;line-height:60px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:36px;padding:8px 12px;font-size:12px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:36px;line-height:36px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:15px;font-weight:normal;line-height:1;color:#6f6f6f;text-align:center;background-color:#eeeeee;border:1px solid #cccccc;border-radius:0}.input-group-addon.input-sm{padding:8px 12px;font-size:12px;border-radius:0}.input-group-addon.input-lg{padding:16px 20px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#008cba}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.4;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#6f6f6f;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#008cba}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:45px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:12px 15px;font-size:19px;line-height:21px;height:45px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:5.5px;margin-bottom:5.5px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:6px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:12px;padding-bottom:12px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:3px;margin-bottom:3px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:3px;margin-bottom:3px}.navbar-btn.btn-sm{margin-top:4.5px;margin-bottom:4.5px}.navbar-btn.btn-xs{margin-top:11.5px;margin-bottom:11.5px}.navbar-text{margin-top:12px;margin-bottom:12px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#333333;border-color:#222222}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#272727}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#272727}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:transparent}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#222222}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#272727;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#272727}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#272727}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#008cba;border-color:#006687}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#006687}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#006687}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:transparent}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#007196}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#006687;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#006687}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#006687}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#006687}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#006687}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#999999}.breadcrumb>.active{color:#333333}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.4;text-decoration:none;color:#008cba;background-color:transparent;border:1px solid transparent;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#008cba;background-color:#eeeeee;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#ffffff;background-color:#008cba;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:transparent;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:16px 20px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:8px 12px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:transparent;border:1px solid transparent;border-radius:3px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.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:#999999;background-color:transparent;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#008cba}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#006687}.label-success{background-color:#43ac6a}.label-success[href]:hover,.label-success[href]:focus{background-color:#358753}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#e99002}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#b67102}.label-danger{background-color:#f04124}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d32a0e}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#008cba;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#008cba;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#fafafa}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#e1e1e1}.container .jumbotron,.container-fluid .jumbotron{border-radius:0}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.4;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#008cba}.thumbnail .caption{padding:9px;color:#222222}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#43ac6a;border-color:#3c9a5f;color:#ffffff}.alert-success hr{border-top-color:#358753}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#5bc0de;border-color:#3db5d8;color:#ffffff}.alert-info hr{border-top-color:#2aabd2}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#e99002;border-color:#d08002;color:#ffffff}.alert-warning hr{border-top-color:#b67102}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#f04124;border-color:#ea2f10;color:#ffffff}.alert-danger hr{border-top-color:#d32a0e}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#f5f5f5;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:21px;color:#ffffff;text-align:center;background-color:#008cba;-webkit-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-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-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;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#43ac6a}.progress-striped .progress-bar-success{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:-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-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{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:-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-bar-warning{background-color:#e99002}.progress-striped .progress-bar-warning{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:-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-bar-danger{background-color:#f04124}.progress-striped .progress-bar-danger{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:-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#008cba;border-color:#008cba}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#87e1ff}.list-group-item-success{color:#43ac6a;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#43ac6a}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#43ac6a;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#43ac6a;border-color:#43ac6a}.list-group-item-info{color:#5bc0de;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#5bc0de}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#5bc0de;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.list-group-item-warning{color:#e99002;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#e99002}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#e99002;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#e99002;border-color:#e99002}.list-group-item-danger{color:#f04124;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#f04124}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#f04124;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#f04124;border-color:#f04124}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#008cba}.panel-primary>.panel-heading{color:#ffffff;background-color:#008cba;border-color:#008cba}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#008cba}.panel-primary>.panel-heading .badge{color:#008cba;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#008cba}.panel-success{border-color:#3c9a5f}.panel-success>.panel-heading{color:#ffffff;background-color:#43ac6a;border-color:#3c9a5f}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3c9a5f}.panel-success>.panel-heading .badge{color:#43ac6a;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3c9a5f}.panel-info{border-color:#3db5d8}.panel-info>.panel-heading{color:#ffffff;background-color:#5bc0de;border-color:#3db5d8}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3db5d8}.panel-info>.panel-heading .badge{color:#5bc0de;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3db5d8}.panel-warning{border-color:#d08002}.panel-warning>.panel-heading{color:#ffffff;background-color:#e99002;border-color:#d08002}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d08002}.panel-warning>.panel-heading .badge{color:#e99002;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d08002}.panel-danger{border-color:#ea2f10}.panel-danger>.panel-heading{color:#ffffff;background-color:#f04124;border-color:#ea2f10}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ea2f10}.panel-danger>.panel-heading .badge{color:#f04124;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ea2f10}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#fafafa;border:1px solid #e8e8e8;border-radius:0;-webkit-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-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.4px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.4}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.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}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.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:3px 8px;color:#ffffff;text-align:center;background-color:#333333;border-radius:0}.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:#333333}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#333333}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#333333}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#333333}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#333333}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#333333}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#333333}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#333333}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#333333;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #333333;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.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:15px;background-color:#333333;border-bottom:1px solid #262626;border-radius:-1 -1 0 0}.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:#000000;border-top-color:rgba(0,0,0,0.05);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#333333}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#000000;border-right-color:rgba(0,0,0,0.05)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#333333}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#000000;border-bottom-color:rgba(0,0,0,0.05);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#333333}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#000000;border-left-color:rgba(0,0,0,0.05)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#333333;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border:none;font-size:13px;font-weight:300}.navbar .navbar-toggle:hover .icon-bar{background-color:#b3b3b3}.navbar-collapse{border-top-color:rgba(0,0,0,0.2);-webkit-box-shadow:none;box-shadow:none}.navbar .btn{padding-top:6px;padding-bottom:6px}.navbar-form{margin-top:7px;margin-bottom:5px}.navbar-form .form-control{height:auto;padding:4px 6px}.navbar .dropdown-menu{border:none}.navbar .dropdown-menu>li>a,.navbar .dropdown-menu>li>a:focus{background-color:transparent;font-size:13px;font-weight:300}.navbar .dropdown-header{color:rgba(255,255,255,0.5)}.navbar-default .dropdown-menu{background-color:#333333}.navbar-default .dropdown-menu>li>a,.navbar-default .dropdown-menu>li>a:focus{color:#ffffff}.navbar-default .dropdown-menu>li>a:hover,.navbar-default .dropdown-menu>.active>a,.navbar-default .dropdown-menu>.active>a:hover{background-color:#272727}.navbar-inverse .dropdown-menu{background-color:#008cba}.navbar-inverse .dropdown-menu>li>a,.navbar-inverse .dropdown-menu>li>a:focus{color:#ffffff}.navbar-inverse .dropdown-menu>li>a:hover,.navbar-inverse .dropdown-menu>.active>a,.navbar-inverse .dropdown-menu>.active>a:hover{background-color:#006687}.btn{padding:8px 12px}.btn-lg{padding:16px 20px}.btn-sm{padding:8px 12px}.btn-xs{padding:4px 6px}.btn-group .btn~.dropdown-toggle{padding-left:16px;padding-right:16px}.btn-group .dropdown-menu{border-top-width:0}.btn-group.dropup .dropdown-menu{border-top-width:1px;border-bottom-width:0;margin-bottom:0}.btn-group .dropdown-toggle.btn-default~.dropdown-menu{background-color:#e7e7e7;border-color:#cccccc}.btn-group .dropdown-toggle.btn-default~.dropdown-menu>li>a{color:#333333}.btn-group .dropdown-toggle.btn-default~.dropdown-menu>li>a:hover{background-color:#d3d3d3}.btn-group .dropdown-toggle.btn-primary~.dropdown-menu{background-color:#008cba;border-color:#0079a1}.btn-group .dropdown-toggle.btn-primary~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-primary~.dropdown-menu>li>a:hover{background-color:#006d91}.btn-group .dropdown-toggle.btn-success~.dropdown-menu{background-color:#43ac6a;border-color:#3c9a5f}.btn-group .dropdown-toggle.btn-success~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-success~.dropdown-menu>li>a:hover{background-color:#388f58}.btn-group .dropdown-toggle.btn-info~.dropdown-menu{background-color:#5bc0de;border-color:#46b8da}.btn-group .dropdown-toggle.btn-info~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-info~.dropdown-menu>li>a:hover{background-color:#39b3d7}.btn-group .dropdown-toggle.btn-warning~.dropdown-menu{background-color:#e99002;border-color:#d08002}.btn-group .dropdown-toggle.btn-warning~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-warning~.dropdown-menu>li>a:hover{background-color:#c17702}.btn-group .dropdown-toggle.btn-danger~.dropdown-menu{background-color:#f04124;border-color:#ea2f10}.btn-group .dropdown-toggle.btn-danger~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-danger~.dropdown-menu>li>a:hover{background-color:#dc2c0f}.lead{color:#6f6f6f}cite{font-style:italic}blockquote{border-left-width:1px;color:#6f6f6f}blockquote.pull-right{border-right-width:1px}blockquote small{font-size:12px;font-weight:300}table{font-size:12px}label,.control-label,.help-block,.checkbox,.radio{font-size:12px;font-weight:normal}input[type="radio"],input[type="checkbox"]{margin-top:1px}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:transparent}.nav-tabs>li>a{background-color:#e7e7e7;color:#222222}.nav-tabs .caret{border-top-color:#222222;border-bottom-color:#222222}.nav-pills{font-weight:300}.breadcrumb{border:1px solid #dddddd;border-radius:3px;font-size:10px;font-weight:300;text-transform:uppercase}.pagination{font-size:12px;font-weight:300;color:#999999}.pagination>li>a,.pagination>li>span{margin-left:4px;color:#999999}.pagination>.active>a,.pagination>.active>span{color:#fff}.pagination>li>a,.pagination>li:first-child>a,.pagination>li:last-child>a,.pagination>li>span,.pagination>li:first-child>span,.pagination>li:last-child>span{border-radius:3px}.pagination-lg>li>a,.pagination-lg>li>span{padding-left:22px;padding-right:22px}.pagination-sm>li>a,.pagination-sm>li>span{padding:0 5px}.pager{font-size:12px;font-weight:300;color:#999999}.list-group{font-size:12px;font-weight:300}.close{opacity:0.4;text-decoration:none;text-shadow:none}.close:hover,.close:focus{opacity:1}.alert{font-size:12px;font-weight:300}.alert .alert-link{font-weight:normal;color:#fff;text-decoration:underline}.label{padding-left:1em;padding-right:1em;border-radius:0;font-weight:300}.label-default{background-color:#e7e7e7;color:#333333}.badge{font-weight:300}.progress{height:22px;padding:2px;background-color:#f6f6f6;border:1px solid #ccc;-webkit-box-shadow:none;box-shadow:none}.dropdown-menu{padding:0;margin-top:0;font-size:12px}.dropdown-menu>li>a{padding:12px 15px}.dropdown-header{padding-left:15px;padding-right:15px;font-size:9px;text-transform:uppercase}.popover{color:#fff;font-size:12px;font-weight:300}.panel-heading,.panel-footer{border-top-right-radius:0;border-top-left-radius:0}.panel-default .close{color:#222222}.modal .close{color:#222222} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/css/font-awesome.min.css b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/css/font-awesome.min.css deleted file mode 100644 index 24fcc04c4e..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.3.0 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.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;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.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.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:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-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);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.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-remove:before,.fa-close:before,.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-photo:before,.fa-image:before,.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,.fa-bar-chart: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-f:before,.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-navicon:before,.fa-reorder:before,.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-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc: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-mail-reply-all:before,.fa-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,.fa-gratipay: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"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/FontAwesome.otf b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/FontAwesome.otf deleted file mode 100644 index f7936cc1e7..0000000000 Binary files a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/FontAwesome.otf and /dev/null differ diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.eot b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.eot deleted file mode 100644 index 33b2bb8005..0000000000 Binary files a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.svg b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.svg deleted file mode 100644 index 1ee89d4368..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,565 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.woff b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.woff deleted file mode 100644 index 8b280b98fa..0000000000 Binary files a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.woff2 b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 3311d58514..0000000000 Binary files a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.woff2 and /dev/null differ diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/mixins.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/mixins.less deleted file mode 100644 index c97f4604ca..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/mixins.less +++ /dev/null @@ -1,27 +0,0 @@ -// Mixins -// -------------------------- - -.fa-icon() { - display: inline-block; - font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); // ensures no half-pixel rendering in firefox - -} - -.fa-icon-rotate(@degrees, @rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); - -webkit-transform: rotate(@degrees); - -ms-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); - -ms-transform: scale(@horiz, @vert); - transform: scale(@horiz, @vert); -} diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_mixins.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_mixins.scss deleted file mode 100644 index 6b7f160931..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_mixins.scss +++ /dev/null @@ -1,27 +0,0 @@ -// Mixins -// -------------------------- - -@mixin fa-icon() { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); // ensures no half-pixel rendering in firefox - -} - -@mixin fa-icon-rotate($degrees, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: rotate($degrees); - -ms-transform: rotate($degrees); - transform: rotate($degrees); -} - -@mixin fa-icon-flip($horiz, $vert, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: scale($horiz, $vert); - -ms-transform: scale($horiz, $vert); - transform: scale($horiz, $vert); -} diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/HELP-US-OUT.txt b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/HELP-US-OUT.txt new file mode 100644 index 0000000000..83d083dd77 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/HELP-US-OUT.txt @@ -0,0 +1,7 @@ +I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, +Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, +comprehensive icon sets or copy and paste your own. + +Please. Check it out. + +-Dave Gandy diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/css/font-awesome.css b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/css/font-awesome.css similarity index 74% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/css/font-awesome.css rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/css/font-awesome.css index 2dcdc22072..ee906a8196 100644 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/css/font-awesome.css +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/css/font-awesome.css @@ -1,13 +1,13 @@ /*! - * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * Font Awesome 4.7.0 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.3.0'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg'); + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); font-weight: normal; font-style: normal; } @@ -18,7 +18,6 @@ text-rendering: auto; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); } /* makes the font 33% larger relative to the icon container */ .fa-lg { @@ -65,6 +64,19 @@ border: solid 0.08em #eeeeee; border-radius: .1em; } +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ .pull-right { float: right; } @@ -106,31 +118,31 @@ } } .fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); } .fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } .fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); -ms-transform: rotate(270deg); transform: rotate(270deg); } .fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); -ms-transform: scale(-1, 1); transform: scale(-1, 1); } .fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); -ms-transform: scale(1, -1); transform: scale(1, -1); @@ -628,6 +640,7 @@ .fa-credit-card:before { content: "\f09d"; } +.fa-feed:before, .fa-rss:before { content: "\f09e"; } @@ -1370,7 +1383,7 @@ .fa-digg:before { content: "\f1a6"; } -.fa-pied-piper:before { +.fa-pied-piper-pp:before { content: "\f1a7"; } .fa-pied-piper-alt:before { @@ -1496,6 +1509,7 @@ content: "\f1ce"; } .fa-ra:before, +.fa-resistance:before, .fa-rebel:before { content: "\f1d0"; } @@ -1509,6 +1523,8 @@ .fa-git:before { content: "\f1d3"; } +.fa-y-combinator-square:before, +.fa-yc-square:before, .fa-hacker-news:before { content: "\f1d4"; } @@ -1533,7 +1549,6 @@ .fa-history:before { content: "\f1da"; } -.fa-genderless:before, .fa-circle-thin:before { content: "\f1db"; } @@ -1738,6 +1753,7 @@ .fa-mercury:before { content: "\f223"; } +.fa-intersex:before, .fa-transgender:before { content: "\f224"; } @@ -1765,6 +1781,9 @@ .fa-neuter:before { content: "\f22c"; } +.fa-genderless:before { + content: "\f22d"; +} .fa-facebook-official:before { content: "\f230"; } @@ -1799,3 +1818,520 @@ .fa-medium:before { content: "\f23a"; } +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/css/font-awesome.min.css b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/css/font-awesome.min.css new file mode 100644 index 0000000000..540440ce89 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 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.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;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.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.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-remove:before,.fa-close:before,.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-photo:before,.fa-image:before,.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,.fa-bar-chart: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-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.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-navicon:before,.fa-reorder:before,.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-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc: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-mail-reply-all:before,.fa-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,.fa-gratipay: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"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/FontAwesome.otf b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/FontAwesome.otf new file mode 100644 index 0000000000..401ec0f36e Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/FontAwesome.otf differ diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.eot b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000..e9f60ca953 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.eot differ diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.svg b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000000..855c845e53 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.ttf b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf similarity index 50% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.ttf rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf index ed9372f8ea..35acda2fa1 100644 Binary files a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/fonts/fontawesome-webfont.ttf and b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf differ diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.woff b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000..400014a4b0 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.woff differ diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000..4d13fc6040 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 differ diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/animated.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/animated.less similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/animated.less rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/animated.less diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/bordered-pulled.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/bordered-pulled.less similarity index 56% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/bordered-pulled.less rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/bordered-pulled.less index 0c90eb5672..f1c8ad75f5 100644 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/bordered-pulled.less +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/bordered-pulled.less @@ -7,6 +7,15 @@ border-radius: .1em; } +.@{fa-css-prefix}-pull-left { float: left; } +.@{fa-css-prefix}-pull-right { float: right; } + +.@{fa-css-prefix} { + &.@{fa-css-prefix}-pull-left { margin-right: .3em; } + &.@{fa-css-prefix}-pull-right { margin-left: .3em; } +} + +/* Deprecated as of 4.4.0 */ .pull-right { float: right; } .pull-left { float: left; } diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/core.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/core.less similarity index 66% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/core.less rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/core.less index f814f1e17e..c577ac84a6 100644 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/core.less +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/core.less @@ -3,11 +3,10 @@ .@{fa-css-prefix} { display: inline-block; - font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration + font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration font-size: inherit; // can't have font-size inherit on line above, so need to override text-rendering: auto; // optimizelegibility throws things off #1094 -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); // ensures no half-pixel rendering in firefox } diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/fixed-width.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/fixed-width.less similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/fixed-width.less rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/fixed-width.less diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/font-awesome.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/font-awesome.less similarity index 81% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/font-awesome.less rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/font-awesome.less index 1f45c63d15..c3677def31 100644 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/font-awesome.less +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/font-awesome.less @@ -1,5 +1,5 @@ /*! - * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ @@ -15,3 +15,4 @@ @import "rotated-flipped.less"; @import "stacked.less"; @import "icons.less"; +@import "screen-reader.less"; diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/icons.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/icons.less similarity index 74% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/icons.less rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/icons.less index c265de5a68..159d600425 100644 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/icons.less +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/icons.less @@ -163,6 +163,7 @@ .@{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}-feed:before, .@{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; } @@ -437,7 +438,7 @@ .@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } .@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } .@{fa-css-prefix}-digg:before { content: @fa-var-digg; } -.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } +.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; } .@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } .@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } .@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } @@ -487,11 +488,14 @@ .@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } .@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } .@{fa-css-prefix}-ra:before, +.@{fa-css-prefix}-resistance:before, .@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } .@{fa-css-prefix}-ge:before, .@{fa-css-prefix}-empire:before { content: @fa-var-empire; } .@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } .@{fa-css-prefix}-git:before { content: @fa-var-git; } +.@{fa-css-prefix}-y-combinator-square:before, +.@{fa-css-prefix}-yc-square:before, .@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } .@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } .@{fa-css-prefix}-qq:before { content: @fa-var-qq; } @@ -502,7 +506,6 @@ .@{fa-css-prefix}-send-o:before, .@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } .@{fa-css-prefix}-history:before { content: @fa-var-history; } -.@{fa-css-prefix}-genderless:before, .@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } .@{fa-css-prefix}-header:before { content: @fa-var-header; } .@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } @@ -573,6 +576,7 @@ .@{fa-css-prefix}-venus:before { content: @fa-var-venus; } .@{fa-css-prefix}-mars:before { content: @fa-var-mars; } .@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } +.@{fa-css-prefix}-intersex:before, .@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } .@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } .@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } @@ -582,6 +586,7 @@ .@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } .@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } .@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } +.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; } .@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; } .@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } .@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } @@ -594,3 +599,191 @@ .@{fa-css-prefix}-train:before { content: @fa-var-train; } .@{fa-css-prefix}-subway:before { content: @fa-var-subway; } .@{fa-css-prefix}-medium:before { content: @fa-var-medium; } +.@{fa-css-prefix}-yc:before, +.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; } +.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; } +.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; } +.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; } +.@{fa-css-prefix}-battery-4:before, +.@{fa-css-prefix}-battery:before, +.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; } +.@{fa-css-prefix}-battery-3:before, +.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; } +.@{fa-css-prefix}-battery-2:before, +.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; } +.@{fa-css-prefix}-battery-1:before, +.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; } +.@{fa-css-prefix}-battery-0:before, +.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; } +.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; } +.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; } +.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; } +.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; } +.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; } +.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; } +.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } +.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } +.@{fa-css-prefix}-clone:before { content: @fa-var-clone; } +.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; } +.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; } +.@{fa-css-prefix}-hourglass-1:before, +.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; } +.@{fa-css-prefix}-hourglass-2:before, +.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; } +.@{fa-css-prefix}-hourglass-3:before, +.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; } +.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; } +.@{fa-css-prefix}-hand-grab-o:before, +.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; } +.@{fa-css-prefix}-hand-stop-o:before, +.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; } +.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; } +.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; } +.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; } +.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; } +.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; } +.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; } +.@{fa-css-prefix}-registered:before { content: @fa-var-registered; } +.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; } +.@{fa-css-prefix}-gg:before { content: @fa-var-gg; } +.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; } +.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; } +.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; } +.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; } +.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; } +.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; } +.@{fa-css-prefix}-safari:before { content: @fa-var-safari; } +.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; } +.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; } +.@{fa-css-prefix}-opera:before { content: @fa-var-opera; } +.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; } +.@{fa-css-prefix}-tv:before, +.@{fa-css-prefix}-television:before { content: @fa-var-television; } +.@{fa-css-prefix}-contao:before { content: @fa-var-contao; } +.@{fa-css-prefix}-500px:before { content: @fa-var-500px; } +.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; } +.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; } +.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; } +.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; } +.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; } +.@{fa-css-prefix}-industry:before { content: @fa-var-industry; } +.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; } +.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; } +.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; } +.@{fa-css-prefix}-map:before { content: @fa-var-map; } +.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; } +.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; } +.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; } +.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; } +.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; } +.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; } +.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; } +.@{fa-css-prefix}-edge:before { content: @fa-var-edge; } +.@{fa-css-prefix}-credit-card-alt:before { content: @fa-var-credit-card-alt; } +.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; } +.@{fa-css-prefix}-modx:before { content: @fa-var-modx; } +.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; } +.@{fa-css-prefix}-usb:before { content: @fa-var-usb; } +.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; } +.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; } +.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; } +.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; } +.@{fa-css-prefix}-pause-circle-o:before { content: @fa-var-pause-circle-o; } +.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; } +.@{fa-css-prefix}-stop-circle-o:before { content: @fa-var-stop-circle-o; } +.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; } +.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; } +.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; } +.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; } +.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; } +.@{fa-css-prefix}-percent:before { content: @fa-var-percent; } +.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; } +.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; } +.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; } +.@{fa-css-prefix}-envira:before { content: @fa-var-envira; } +.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; } +.@{fa-css-prefix}-wheelchair-alt:before { content: @fa-var-wheelchair-alt; } +.@{fa-css-prefix}-question-circle-o:before { content: @fa-var-question-circle-o; } +.@{fa-css-prefix}-blind:before { content: @fa-var-blind; } +.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; } +.@{fa-css-prefix}-volume-control-phone:before { content: @fa-var-volume-control-phone; } +.@{fa-css-prefix}-braille:before { content: @fa-var-braille; } +.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; } +.@{fa-css-prefix}-asl-interpreting:before, +.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; } +.@{fa-css-prefix}-deafness:before, +.@{fa-css-prefix}-hard-of-hearing:before, +.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; } +.@{fa-css-prefix}-glide:before { content: @fa-var-glide; } +.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; } +.@{fa-css-prefix}-signing:before, +.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; } +.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; } +.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; } +.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; } +.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; } +.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; } +.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; } +.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } +.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; } +.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; } +.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; } +.@{fa-css-prefix}-google-plus-circle:before, +.@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; } +.@{fa-css-prefix}-fa:before, +.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; } +.@{fa-css-prefix}-handshake-o:before { content: @fa-var-handshake-o; } +.@{fa-css-prefix}-envelope-open:before { content: @fa-var-envelope-open; } +.@{fa-css-prefix}-envelope-open-o:before { content: @fa-var-envelope-open-o; } +.@{fa-css-prefix}-linode:before { content: @fa-var-linode; } +.@{fa-css-prefix}-address-book:before { content: @fa-var-address-book; } +.@{fa-css-prefix}-address-book-o:before { content: @fa-var-address-book-o; } +.@{fa-css-prefix}-vcard:before, +.@{fa-css-prefix}-address-card:before { content: @fa-var-address-card; } +.@{fa-css-prefix}-vcard-o:before, +.@{fa-css-prefix}-address-card-o:before { content: @fa-var-address-card-o; } +.@{fa-css-prefix}-user-circle:before { content: @fa-var-user-circle; } +.@{fa-css-prefix}-user-circle-o:before { content: @fa-var-user-circle-o; } +.@{fa-css-prefix}-user-o:before { content: @fa-var-user-o; } +.@{fa-css-prefix}-id-badge:before { content: @fa-var-id-badge; } +.@{fa-css-prefix}-drivers-license:before, +.@{fa-css-prefix}-id-card:before { content: @fa-var-id-card; } +.@{fa-css-prefix}-drivers-license-o:before, +.@{fa-css-prefix}-id-card-o:before { content: @fa-var-id-card-o; } +.@{fa-css-prefix}-quora:before { content: @fa-var-quora; } +.@{fa-css-prefix}-free-code-camp:before { content: @fa-var-free-code-camp; } +.@{fa-css-prefix}-telegram:before { content: @fa-var-telegram; } +.@{fa-css-prefix}-thermometer-4:before, +.@{fa-css-prefix}-thermometer:before, +.@{fa-css-prefix}-thermometer-full:before { content: @fa-var-thermometer-full; } +.@{fa-css-prefix}-thermometer-3:before, +.@{fa-css-prefix}-thermometer-three-quarters:before { content: @fa-var-thermometer-three-quarters; } +.@{fa-css-prefix}-thermometer-2:before, +.@{fa-css-prefix}-thermometer-half:before { content: @fa-var-thermometer-half; } +.@{fa-css-prefix}-thermometer-1:before, +.@{fa-css-prefix}-thermometer-quarter:before { content: @fa-var-thermometer-quarter; } +.@{fa-css-prefix}-thermometer-0:before, +.@{fa-css-prefix}-thermometer-empty:before { content: @fa-var-thermometer-empty; } +.@{fa-css-prefix}-shower:before { content: @fa-var-shower; } +.@{fa-css-prefix}-bathtub:before, +.@{fa-css-prefix}-s15:before, +.@{fa-css-prefix}-bath:before { content: @fa-var-bath; } +.@{fa-css-prefix}-podcast:before { content: @fa-var-podcast; } +.@{fa-css-prefix}-window-maximize:before { content: @fa-var-window-maximize; } +.@{fa-css-prefix}-window-minimize:before { content: @fa-var-window-minimize; } +.@{fa-css-prefix}-window-restore:before { content: @fa-var-window-restore; } +.@{fa-css-prefix}-times-rectangle:before, +.@{fa-css-prefix}-window-close:before { content: @fa-var-window-close; } +.@{fa-css-prefix}-times-rectangle-o:before, +.@{fa-css-prefix}-window-close-o:before { content: @fa-var-window-close-o; } +.@{fa-css-prefix}-bandcamp:before { content: @fa-var-bandcamp; } +.@{fa-css-prefix}-grav:before { content: @fa-var-grav; } +.@{fa-css-prefix}-etsy:before { content: @fa-var-etsy; } +.@{fa-css-prefix}-imdb:before { content: @fa-var-imdb; } +.@{fa-css-prefix}-ravelry:before { content: @fa-var-ravelry; } +.@{fa-css-prefix}-eercast:before { content: @fa-var-eercast; } +.@{fa-css-prefix}-microchip:before { content: @fa-var-microchip; } +.@{fa-css-prefix}-snowflake-o:before { content: @fa-var-snowflake-o; } +.@{fa-css-prefix}-superpowers:before { content: @fa-var-superpowers; } +.@{fa-css-prefix}-wpexplorer:before { content: @fa-var-wpexplorer; } +.@{fa-css-prefix}-meetup:before { content: @fa-var-meetup; } diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/larger.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/larger.less similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/larger.less rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/larger.less diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/list.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/list.less similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/list.less rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/list.less diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/mixins.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/mixins.less new file mode 100644 index 0000000000..beef231d0e --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/mixins.less @@ -0,0 +1,60 @@ +// Mixins +// -------------------------- + +.fa-icon() { + display: inline-block; + font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} + +.fa-icon-rotate(@degrees, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; + -webkit-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); + transform: rotate(@degrees); +} + +.fa-icon-flip(@horiz, @vert, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; + -webkit-transform: scale(@horiz, @vert); + -ms-transform: scale(@horiz, @vert); + transform: scale(@horiz, @vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +.sr-only() { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +.sr-only-focusable() { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/path.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/path.less similarity index 87% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/path.less rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/path.less index 9211e66597..835be41f81 100644 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/path.less +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/path.less @@ -9,7 +9,7 @@ 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 + // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts font-weight: normal; font-style: normal; } diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/rotated-flipped.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/rotated-flipped.less similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/rotated-flipped.less rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/rotated-flipped.less diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/screen-reader.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/screen-reader.less new file mode 100644 index 0000000000..11c188196d --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/screen-reader.less @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { .sr-only(); } +.sr-only-focusable { .sr-only-focusable(); } diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/stacked.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/stacked.less similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/stacked.less rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/stacked.less diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/variables.less b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/variables.less similarity index 73% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/variables.less rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/variables.less index d526064c84..7ddbbc0115 100644 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/less/variables.less +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/less/variables.less @@ -3,20 +3,28 @@ @fa-font-path: "../fonts"; @fa-font-size-base: 14px; -//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts"; // for referencing Bootstrap CDN font files directly +@fa-line-height-base: 1; +//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts"; // for referencing Bootstrap CDN font files directly @fa-css-prefix: fa; -@fa-version: "4.3.0"; +@fa-version: "4.7.0"; @fa-border-color: #eee; @fa-inverse: #fff; @fa-li-width: (30em / 14); +@fa-var-500px: "\f26e"; +@fa-var-address-book: "\f2b9"; +@fa-var-address-book-o: "\f2ba"; +@fa-var-address-card: "\f2bb"; +@fa-var-address-card-o: "\f2bc"; @fa-var-adjust: "\f042"; @fa-var-adn: "\f170"; @fa-var-align-center: "\f037"; @fa-var-align-justify: "\f039"; @fa-var-align-left: "\f036"; @fa-var-align-right: "\f038"; +@fa-var-amazon: "\f270"; @fa-var-ambulance: "\f0f9"; +@fa-var-american-sign-language-interpreting: "\f2a3"; @fa-var-anchor: "\f13d"; @fa-var-android: "\f17b"; @fa-var-angellist: "\f209"; @@ -47,16 +55,34 @@ @fa-var-arrows-alt: "\f0b2"; @fa-var-arrows-h: "\f07e"; @fa-var-arrows-v: "\f07d"; +@fa-var-asl-interpreting: "\f2a3"; +@fa-var-assistive-listening-systems: "\f2a2"; @fa-var-asterisk: "\f069"; @fa-var-at: "\f1fa"; +@fa-var-audio-description: "\f29e"; @fa-var-automobile: "\f1b9"; @fa-var-backward: "\f04a"; +@fa-var-balance-scale: "\f24e"; @fa-var-ban: "\f05e"; +@fa-var-bandcamp: "\f2d5"; @fa-var-bank: "\f19c"; @fa-var-bar-chart: "\f080"; @fa-var-bar-chart-o: "\f080"; @fa-var-barcode: "\f02a"; @fa-var-bars: "\f0c9"; +@fa-var-bath: "\f2cd"; +@fa-var-bathtub: "\f2cd"; +@fa-var-battery: "\f240"; +@fa-var-battery-0: "\f244"; +@fa-var-battery-1: "\f243"; +@fa-var-battery-2: "\f242"; +@fa-var-battery-3: "\f241"; +@fa-var-battery-4: "\f240"; +@fa-var-battery-empty: "\f244"; +@fa-var-battery-full: "\f240"; +@fa-var-battery-half: "\f242"; +@fa-var-battery-quarter: "\f243"; +@fa-var-battery-three-quarters: "\f241"; @fa-var-bed: "\f236"; @fa-var-beer: "\f0fc"; @fa-var-behance: "\f1b4"; @@ -71,12 +97,17 @@ @fa-var-bitbucket: "\f171"; @fa-var-bitbucket-square: "\f172"; @fa-var-bitcoin: "\f15a"; +@fa-var-black-tie: "\f27e"; +@fa-var-blind: "\f29d"; +@fa-var-bluetooth: "\f293"; +@fa-var-bluetooth-b: "\f294"; @fa-var-bold: "\f032"; @fa-var-bolt: "\f0e7"; @fa-var-bomb: "\f1e2"; @fa-var-book: "\f02d"; @fa-var-bookmark: "\f02e"; @fa-var-bookmark-o: "\f097"; +@fa-var-braille: "\f2a1"; @fa-var-briefcase: "\f0b1"; @fa-var-btc: "\f15a"; @fa-var-bug: "\f188"; @@ -89,7 +120,11 @@ @fa-var-cab: "\f1ba"; @fa-var-calculator: "\f1ec"; @fa-var-calendar: "\f073"; +@fa-var-calendar-check-o: "\f274"; +@fa-var-calendar-minus-o: "\f272"; @fa-var-calendar-o: "\f133"; +@fa-var-calendar-plus-o: "\f271"; +@fa-var-calendar-times-o: "\f273"; @fa-var-camera: "\f030"; @fa-var-camera-retro: "\f083"; @fa-var-car: "\f1b9"; @@ -105,7 +140,9 @@ @fa-var-cart-plus: "\f217"; @fa-var-cc: "\f20a"; @fa-var-cc-amex: "\f1f3"; +@fa-var-cc-diners-club: "\f24c"; @fa-var-cc-discover: "\f1f2"; +@fa-var-cc-jcb: "\f24b"; @fa-var-cc-mastercard: "\f1f1"; @fa-var-cc-paypal: "\f1f4"; @fa-var-cc-stripe: "\f1f5"; @@ -127,12 +164,14 @@ @fa-var-chevron-right: "\f054"; @fa-var-chevron-up: "\f077"; @fa-var-child: "\f1ae"; +@fa-var-chrome: "\f268"; @fa-var-circle: "\f111"; @fa-var-circle-o: "\f10c"; @fa-var-circle-o-notch: "\f1ce"; @fa-var-circle-thin: "\f1db"; @fa-var-clipboard: "\f0ea"; @fa-var-clock-o: "\f017"; +@fa-var-clone: "\f24d"; @fa-var-close: "\f00d"; @fa-var-cloud: "\f0c2"; @fa-var-cloud-download: "\f0ed"; @@ -141,20 +180,26 @@ @fa-var-code: "\f121"; @fa-var-code-fork: "\f126"; @fa-var-codepen: "\f1cb"; +@fa-var-codiepie: "\f284"; @fa-var-coffee: "\f0f4"; @fa-var-cog: "\f013"; @fa-var-cogs: "\f085"; @fa-var-columns: "\f0db"; @fa-var-comment: "\f075"; @fa-var-comment-o: "\f0e5"; +@fa-var-commenting: "\f27a"; +@fa-var-commenting-o: "\f27b"; @fa-var-comments: "\f086"; @fa-var-comments-o: "\f0e6"; @fa-var-compass: "\f14e"; @fa-var-compress: "\f066"; @fa-var-connectdevelop: "\f20e"; +@fa-var-contao: "\f26d"; @fa-var-copy: "\f0c5"; @fa-var-copyright: "\f1f9"; +@fa-var-creative-commons: "\f25e"; @fa-var-credit-card: "\f09d"; +@fa-var-credit-card-alt: "\f283"; @fa-var-crop: "\f125"; @fa-var-crosshairs: "\f05b"; @fa-var-css3: "\f13c"; @@ -165,6 +210,8 @@ @fa-var-dashboard: "\f0e4"; @fa-var-dashcube: "\f210"; @fa-var-database: "\f1c0"; +@fa-var-deaf: "\f2a4"; +@fa-var-deafness: "\f2a4"; @fa-var-dedent: "\f03b"; @fa-var-delicious: "\f1a5"; @fa-var-desktop: "\f108"; @@ -175,17 +222,25 @@ @fa-var-dot-circle-o: "\f192"; @fa-var-download: "\f019"; @fa-var-dribbble: "\f17d"; +@fa-var-drivers-license: "\f2c2"; +@fa-var-drivers-license-o: "\f2c3"; @fa-var-dropbox: "\f16b"; @fa-var-drupal: "\f1a9"; +@fa-var-edge: "\f282"; @fa-var-edit: "\f044"; +@fa-var-eercast: "\f2da"; @fa-var-eject: "\f052"; @fa-var-ellipsis-h: "\f141"; @fa-var-ellipsis-v: "\f142"; @fa-var-empire: "\f1d1"; @fa-var-envelope: "\f0e0"; @fa-var-envelope-o: "\f003"; +@fa-var-envelope-open: "\f2b6"; +@fa-var-envelope-open-o: "\f2b7"; @fa-var-envelope-square: "\f199"; +@fa-var-envira: "\f299"; @fa-var-eraser: "\f12d"; +@fa-var-etsy: "\f2d7"; @fa-var-eur: "\f153"; @fa-var-euro: "\f153"; @fa-var-exchange: "\f0ec"; @@ -193,11 +248,13 @@ @fa-var-exclamation-circle: "\f06a"; @fa-var-exclamation-triangle: "\f071"; @fa-var-expand: "\f065"; +@fa-var-expeditedssl: "\f23e"; @fa-var-external-link: "\f08e"; @fa-var-external-link-square: "\f14c"; @fa-var-eye: "\f06e"; @fa-var-eye-slash: "\f070"; @fa-var-eyedropper: "\f1fb"; +@fa-var-fa: "\f2b4"; @fa-var-facebook: "\f09a"; @fa-var-facebook-f: "\f09a"; @fa-var-facebook-official: "\f230"; @@ -205,6 +262,7 @@ @fa-var-fast-backward: "\f049"; @fa-var-fast-forward: "\f050"; @fa-var-fax: "\f1ac"; +@fa-var-feed: "\f09e"; @fa-var-female: "\f182"; @fa-var-fighter-jet: "\f0fb"; @fa-var-file: "\f15b"; @@ -230,6 +288,8 @@ @fa-var-filter: "\f0b0"; @fa-var-fire: "\f06d"; @fa-var-fire-extinguisher: "\f134"; +@fa-var-firefox: "\f269"; +@fa-var-first-order: "\f2b0"; @fa-var-flag: "\f024"; @fa-var-flag-checkered: "\f11e"; @fa-var-flag-o: "\f11d"; @@ -242,9 +302,13 @@ @fa-var-folder-open: "\f07c"; @fa-var-folder-open-o: "\f115"; @fa-var-font: "\f031"; +@fa-var-font-awesome: "\f2b4"; +@fa-var-fonticons: "\f280"; +@fa-var-fort-awesome: "\f286"; @fa-var-forumbee: "\f211"; @fa-var-forward: "\f04e"; @fa-var-foursquare: "\f180"; +@fa-var-free-code-camp: "\f2c5"; @fa-var-frown-o: "\f119"; @fa-var-futbol-o: "\f1e3"; @fa-var-gamepad: "\f11b"; @@ -253,29 +317,50 @@ @fa-var-ge: "\f1d1"; @fa-var-gear: "\f013"; @fa-var-gears: "\f085"; -@fa-var-genderless: "\f1db"; +@fa-var-genderless: "\f22d"; +@fa-var-get-pocket: "\f265"; +@fa-var-gg: "\f260"; +@fa-var-gg-circle: "\f261"; @fa-var-gift: "\f06b"; @fa-var-git: "\f1d3"; @fa-var-git-square: "\f1d2"; @fa-var-github: "\f09b"; @fa-var-github-alt: "\f113"; @fa-var-github-square: "\f092"; +@fa-var-gitlab: "\f296"; @fa-var-gittip: "\f184"; @fa-var-glass: "\f000"; +@fa-var-glide: "\f2a5"; +@fa-var-glide-g: "\f2a6"; @fa-var-globe: "\f0ac"; @fa-var-google: "\f1a0"; @fa-var-google-plus: "\f0d5"; +@fa-var-google-plus-circle: "\f2b3"; +@fa-var-google-plus-official: "\f2b3"; @fa-var-google-plus-square: "\f0d4"; @fa-var-google-wallet: "\f1ee"; @fa-var-graduation-cap: "\f19d"; @fa-var-gratipay: "\f184"; +@fa-var-grav: "\f2d6"; @fa-var-group: "\f0c0"; @fa-var-h-square: "\f0fd"; @fa-var-hacker-news: "\f1d4"; +@fa-var-hand-grab-o: "\f255"; +@fa-var-hand-lizard-o: "\f258"; @fa-var-hand-o-down: "\f0a7"; @fa-var-hand-o-left: "\f0a5"; @fa-var-hand-o-right: "\f0a4"; @fa-var-hand-o-up: "\f0a6"; +@fa-var-hand-paper-o: "\f256"; +@fa-var-hand-peace-o: "\f25b"; +@fa-var-hand-pointer-o: "\f25a"; +@fa-var-hand-rock-o: "\f255"; +@fa-var-hand-scissors-o: "\f257"; +@fa-var-hand-spock-o: "\f259"; +@fa-var-hand-stop-o: "\f256"; +@fa-var-handshake-o: "\f2b5"; +@fa-var-hard-of-hearing: "\f2a4"; +@fa-var-hashtag: "\f292"; @fa-var-hdd-o: "\f0a0"; @fa-var-header: "\f1dc"; @fa-var-headphones: "\f025"; @@ -286,16 +371,33 @@ @fa-var-home: "\f015"; @fa-var-hospital-o: "\f0f8"; @fa-var-hotel: "\f236"; +@fa-var-hourglass: "\f254"; +@fa-var-hourglass-1: "\f251"; +@fa-var-hourglass-2: "\f252"; +@fa-var-hourglass-3: "\f253"; +@fa-var-hourglass-end: "\f253"; +@fa-var-hourglass-half: "\f252"; +@fa-var-hourglass-o: "\f250"; +@fa-var-hourglass-start: "\f251"; +@fa-var-houzz: "\f27c"; @fa-var-html5: "\f13b"; +@fa-var-i-cursor: "\f246"; +@fa-var-id-badge: "\f2c1"; +@fa-var-id-card: "\f2c2"; +@fa-var-id-card-o: "\f2c3"; @fa-var-ils: "\f20b"; @fa-var-image: "\f03e"; +@fa-var-imdb: "\f2d8"; @fa-var-inbox: "\f01c"; @fa-var-indent: "\f03c"; +@fa-var-industry: "\f275"; @fa-var-info: "\f129"; @fa-var-info-circle: "\f05a"; @fa-var-inr: "\f156"; @fa-var-instagram: "\f16d"; @fa-var-institution: "\f19c"; +@fa-var-internet-explorer: "\f26b"; +@fa-var-intersex: "\f224"; @fa-var-ioxhost: "\f208"; @fa-var-italic: "\f033"; @fa-var-joomla: "\f1aa"; @@ -323,6 +425,7 @@ @fa-var-link: "\f0c1"; @fa-var-linkedin: "\f0e1"; @fa-var-linkedin-square: "\f08c"; +@fa-var-linode: "\f2b8"; @fa-var-linux: "\f17c"; @fa-var-list: "\f03a"; @fa-var-list-alt: "\f022"; @@ -334,13 +437,18 @@ @fa-var-long-arrow-left: "\f177"; @fa-var-long-arrow-right: "\f178"; @fa-var-long-arrow-up: "\f176"; +@fa-var-low-vision: "\f2a8"; @fa-var-magic: "\f0d0"; @fa-var-magnet: "\f076"; @fa-var-mail-forward: "\f064"; @fa-var-mail-reply: "\f112"; @fa-var-mail-reply-all: "\f122"; @fa-var-male: "\f183"; +@fa-var-map: "\f279"; @fa-var-map-marker: "\f041"; +@fa-var-map-o: "\f278"; +@fa-var-map-pin: "\f276"; +@fa-var-map-signs: "\f277"; @fa-var-mars: "\f222"; @fa-var-mars-double: "\f227"; @fa-var-mars-stroke: "\f229"; @@ -350,25 +458,37 @@ @fa-var-meanpath: "\f20c"; @fa-var-medium: "\f23a"; @fa-var-medkit: "\f0fa"; +@fa-var-meetup: "\f2e0"; @fa-var-meh-o: "\f11a"; @fa-var-mercury: "\f223"; +@fa-var-microchip: "\f2db"; @fa-var-microphone: "\f130"; @fa-var-microphone-slash: "\f131"; @fa-var-minus: "\f068"; @fa-var-minus-circle: "\f056"; @fa-var-minus-square: "\f146"; @fa-var-minus-square-o: "\f147"; +@fa-var-mixcloud: "\f289"; @fa-var-mobile: "\f10b"; @fa-var-mobile-phone: "\f10b"; +@fa-var-modx: "\f285"; @fa-var-money: "\f0d6"; @fa-var-moon-o: "\f186"; @fa-var-mortar-board: "\f19d"; @fa-var-motorcycle: "\f21c"; +@fa-var-mouse-pointer: "\f245"; @fa-var-music: "\f001"; @fa-var-navicon: "\f0c9"; @fa-var-neuter: "\f22c"; @fa-var-newspaper-o: "\f1ea"; +@fa-var-object-group: "\f247"; +@fa-var-object-ungroup: "\f248"; +@fa-var-odnoklassniki: "\f263"; +@fa-var-odnoklassniki-square: "\f264"; +@fa-var-opencart: "\f23d"; @fa-var-openid: "\f19b"; +@fa-var-opera: "\f26a"; +@fa-var-optin-monster: "\f23c"; @fa-var-outdent: "\f03b"; @fa-var-pagelines: "\f18c"; @fa-var-paint-brush: "\f1fc"; @@ -378,18 +498,22 @@ @fa-var-paragraph: "\f1dd"; @fa-var-paste: "\f0ea"; @fa-var-pause: "\f04c"; +@fa-var-pause-circle: "\f28b"; +@fa-var-pause-circle-o: "\f28c"; @fa-var-paw: "\f1b0"; @fa-var-paypal: "\f1ed"; @fa-var-pencil: "\f040"; @fa-var-pencil-square: "\f14b"; @fa-var-pencil-square-o: "\f044"; +@fa-var-percent: "\f295"; @fa-var-phone: "\f095"; @fa-var-phone-square: "\f098"; @fa-var-photo: "\f03e"; @fa-var-picture-o: "\f03e"; @fa-var-pie-chart: "\f200"; -@fa-var-pied-piper: "\f1a7"; +@fa-var-pied-piper: "\f2ae"; @fa-var-pied-piper-alt: "\f1a8"; +@fa-var-pied-piper-pp: "\f1a7"; @fa-var-pinterest: "\f0d2"; @fa-var-pinterest-p: "\f231"; @fa-var-pinterest-square: "\f0d3"; @@ -402,28 +526,36 @@ @fa-var-plus-circle: "\f055"; @fa-var-plus-square: "\f0fe"; @fa-var-plus-square-o: "\f196"; +@fa-var-podcast: "\f2ce"; @fa-var-power-off: "\f011"; @fa-var-print: "\f02f"; +@fa-var-product-hunt: "\f288"; @fa-var-puzzle-piece: "\f12e"; @fa-var-qq: "\f1d6"; @fa-var-qrcode: "\f029"; @fa-var-question: "\f128"; @fa-var-question-circle: "\f059"; +@fa-var-question-circle-o: "\f29c"; +@fa-var-quora: "\f2c4"; @fa-var-quote-left: "\f10d"; @fa-var-quote-right: "\f10e"; @fa-var-ra: "\f1d0"; @fa-var-random: "\f074"; +@fa-var-ravelry: "\f2d9"; @fa-var-rebel: "\f1d0"; @fa-var-recycle: "\f1b8"; @fa-var-reddit: "\f1a1"; +@fa-var-reddit-alien: "\f281"; @fa-var-reddit-square: "\f1a2"; @fa-var-refresh: "\f021"; +@fa-var-registered: "\f25d"; @fa-var-remove: "\f00d"; @fa-var-renren: "\f18b"; @fa-var-reorder: "\f0c9"; @fa-var-repeat: "\f01e"; @fa-var-reply: "\f112"; @fa-var-reply-all: "\f122"; +@fa-var-resistance: "\f1d0"; @fa-var-retweet: "\f079"; @fa-var-rmb: "\f157"; @fa-var-road: "\f018"; @@ -436,8 +568,11 @@ @fa-var-rub: "\f158"; @fa-var-ruble: "\f158"; @fa-var-rupee: "\f156"; +@fa-var-s15: "\f2cd"; +@fa-var-safari: "\f267"; @fa-var-save: "\f0c7"; @fa-var-scissors: "\f0c4"; +@fa-var-scribd: "\f28a"; @fa-var-search: "\f002"; @fa-var-search-minus: "\f010"; @fa-var-search-plus: "\f00e"; @@ -455,10 +590,15 @@ @fa-var-shield: "\f132"; @fa-var-ship: "\f21a"; @fa-var-shirtsinbulk: "\f214"; +@fa-var-shopping-bag: "\f290"; +@fa-var-shopping-basket: "\f291"; @fa-var-shopping-cart: "\f07a"; +@fa-var-shower: "\f2cc"; @fa-var-sign-in: "\f090"; +@fa-var-sign-language: "\f2a7"; @fa-var-sign-out: "\f08b"; @fa-var-signal: "\f012"; +@fa-var-signing: "\f2a7"; @fa-var-simplybuilt: "\f215"; @fa-var-sitemap: "\f0e8"; @fa-var-skyatlas: "\f216"; @@ -467,6 +607,10 @@ @fa-var-sliders: "\f1de"; @fa-var-slideshare: "\f1e7"; @fa-var-smile-o: "\f118"; +@fa-var-snapchat: "\f2ab"; +@fa-var-snapchat-ghost: "\f2ac"; +@fa-var-snapchat-square: "\f2ad"; +@fa-var-snowflake-o: "\f2dc"; @fa-var-soccer-ball-o: "\f1e3"; @fa-var-sort: "\f0dc"; @fa-var-sort-alpha-asc: "\f15d"; @@ -499,7 +643,11 @@ @fa-var-step-backward: "\f048"; @fa-var-step-forward: "\f051"; @fa-var-stethoscope: "\f0f1"; +@fa-var-sticky-note: "\f249"; +@fa-var-sticky-note-o: "\f24a"; @fa-var-stop: "\f04d"; +@fa-var-stop-circle: "\f28d"; +@fa-var-stop-circle-o: "\f28e"; @fa-var-street-view: "\f21d"; @fa-var-strikethrough: "\f0cc"; @fa-var-stumbleupon: "\f1a4"; @@ -508,6 +656,7 @@ @fa-var-subway: "\f239"; @fa-var-suitcase: "\f0f2"; @fa-var-sun-o: "\f185"; +@fa-var-superpowers: "\f2dd"; @fa-var-superscript: "\f12b"; @fa-var-support: "\f1cd"; @fa-var-table: "\f0ce"; @@ -517,6 +666,8 @@ @fa-var-tags: "\f02c"; @fa-var-tasks: "\f0ae"; @fa-var-taxi: "\f1ba"; +@fa-var-telegram: "\f2c6"; +@fa-var-television: "\f26c"; @fa-var-tencent-weibo: "\f1d5"; @fa-var-terminal: "\f120"; @fa-var-text-height: "\f034"; @@ -524,6 +675,18 @@ @fa-var-th: "\f00a"; @fa-var-th-large: "\f009"; @fa-var-th-list: "\f00b"; +@fa-var-themeisle: "\f2b2"; +@fa-var-thermometer: "\f2c7"; +@fa-var-thermometer-0: "\f2cb"; +@fa-var-thermometer-1: "\f2ca"; +@fa-var-thermometer-2: "\f2c9"; +@fa-var-thermometer-3: "\f2c8"; +@fa-var-thermometer-4: "\f2c7"; +@fa-var-thermometer-empty: "\f2cb"; +@fa-var-thermometer-full: "\f2c7"; +@fa-var-thermometer-half: "\f2c9"; +@fa-var-thermometer-quarter: "\f2ca"; +@fa-var-thermometer-three-quarters: "\f2c8"; @fa-var-thumb-tack: "\f08d"; @fa-var-thumbs-down: "\f165"; @fa-var-thumbs-o-down: "\f088"; @@ -533,6 +696,8 @@ @fa-var-times: "\f00d"; @fa-var-times-circle: "\f057"; @fa-var-times-circle-o: "\f05c"; +@fa-var-times-rectangle: "\f2d3"; +@fa-var-times-rectangle-o: "\f2d4"; @fa-var-tint: "\f043"; @fa-var-toggle-down: "\f150"; @fa-var-toggle-left: "\f191"; @@ -540,6 +705,7 @@ @fa-var-toggle-on: "\f205"; @fa-var-toggle-right: "\f152"; @fa-var-toggle-up: "\f151"; +@fa-var-trademark: "\f25c"; @fa-var-train: "\f238"; @fa-var-transgender: "\f224"; @fa-var-transgender-alt: "\f225"; @@ -547,6 +713,7 @@ @fa-var-trash-o: "\f014"; @fa-var-tree: "\f1bb"; @fa-var-trello: "\f181"; +@fa-var-tripadvisor: "\f262"; @fa-var-trophy: "\f091"; @fa-var-truck: "\f0d1"; @fa-var-try: "\f195"; @@ -554,33 +721,45 @@ @fa-var-tumblr: "\f173"; @fa-var-tumblr-square: "\f174"; @fa-var-turkish-lira: "\f195"; +@fa-var-tv: "\f26c"; @fa-var-twitch: "\f1e8"; @fa-var-twitter: "\f099"; @fa-var-twitter-square: "\f081"; @fa-var-umbrella: "\f0e9"; @fa-var-underline: "\f0cd"; @fa-var-undo: "\f0e2"; +@fa-var-universal-access: "\f29a"; @fa-var-university: "\f19c"; @fa-var-unlink: "\f127"; @fa-var-unlock: "\f09c"; @fa-var-unlock-alt: "\f13e"; @fa-var-unsorted: "\f0dc"; @fa-var-upload: "\f093"; +@fa-var-usb: "\f287"; @fa-var-usd: "\f155"; @fa-var-user: "\f007"; +@fa-var-user-circle: "\f2bd"; +@fa-var-user-circle-o: "\f2be"; @fa-var-user-md: "\f0f0"; +@fa-var-user-o: "\f2c0"; @fa-var-user-plus: "\f234"; @fa-var-user-secret: "\f21b"; @fa-var-user-times: "\f235"; @fa-var-users: "\f0c0"; +@fa-var-vcard: "\f2bb"; +@fa-var-vcard-o: "\f2bc"; @fa-var-venus: "\f221"; @fa-var-venus-double: "\f226"; @fa-var-venus-mars: "\f228"; @fa-var-viacoin: "\f237"; +@fa-var-viadeo: "\f2a9"; +@fa-var-viadeo-square: "\f2aa"; @fa-var-video-camera: "\f03d"; +@fa-var-vimeo: "\f27d"; @fa-var-vimeo-square: "\f194"; @fa-var-vine: "\f1ca"; @fa-var-vk: "\f189"; +@fa-var-volume-control-phone: "\f2a0"; @fa-var-volume-down: "\f027"; @fa-var-volume-off: "\f026"; @fa-var-volume-up: "\f028"; @@ -590,16 +769,31 @@ @fa-var-weixin: "\f1d7"; @fa-var-whatsapp: "\f232"; @fa-var-wheelchair: "\f193"; +@fa-var-wheelchair-alt: "\f29b"; @fa-var-wifi: "\f1eb"; +@fa-var-wikipedia-w: "\f266"; +@fa-var-window-close: "\f2d3"; +@fa-var-window-close-o: "\f2d4"; +@fa-var-window-maximize: "\f2d0"; +@fa-var-window-minimize: "\f2d1"; +@fa-var-window-restore: "\f2d2"; @fa-var-windows: "\f17a"; @fa-var-won: "\f159"; @fa-var-wordpress: "\f19a"; +@fa-var-wpbeginner: "\f297"; +@fa-var-wpexplorer: "\f2de"; +@fa-var-wpforms: "\f298"; @fa-var-wrench: "\f0ad"; @fa-var-xing: "\f168"; @fa-var-xing-square: "\f169"; +@fa-var-y-combinator: "\f23b"; +@fa-var-y-combinator-square: "\f1d4"; @fa-var-yahoo: "\f19e"; +@fa-var-yc: "\f23b"; +@fa-var-yc-square: "\f1d4"; @fa-var-yelp: "\f1e9"; @fa-var-yen: "\f157"; +@fa-var-yoast: "\f2b1"; @fa-var-youtube: "\f167"; @fa-var-youtube-play: "\f16a"; @fa-var-youtube-square: "\f166"; diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_animated.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_animated.scss similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_animated.scss rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_animated.scss diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_bordered-pulled.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_bordered-pulled.scss similarity index 56% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_bordered-pulled.scss rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_bordered-pulled.scss index 9d3fdf3a0b..d4b85a02f2 100644 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_bordered-pulled.scss +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_bordered-pulled.scss @@ -7,6 +7,15 @@ border-radius: .1em; } +.#{$fa-css-prefix}-pull-left { float: left; } +.#{$fa-css-prefix}-pull-right { float: right; } + +.#{$fa-css-prefix} { + &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } + &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } +} + +/* Deprecated as of 4.4.0 */ .pull-right { float: right; } .pull-left { float: left; } diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_core.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_core.scss similarity index 66% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_core.scss rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_core.scss index 5a2db9d561..7425ef85fc 100644 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_core.scss +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_core.scss @@ -3,11 +3,10 @@ .#{$fa-css-prefix} { display: inline-block; - font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration + font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration font-size: inherit; // can't have font-size inherit on line above, so need to override text-rendering: auto; // optimizelegibility throws things off #1094 -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); // ensures no half-pixel rendering in firefox } diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_fixed-width.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_fixed-width.scss similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_fixed-width.scss rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_fixed-width.scss diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_icons.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_icons.scss similarity index 74% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_icons.scss rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_icons.scss index fbcfe81237..e63e702c4d 100644 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_icons.scss +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_icons.scss @@ -163,6 +163,7 @@ .#{$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}-feed:before, .#{$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; } @@ -437,7 +438,7 @@ .#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } .#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } .#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } -.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } +.#{$fa-css-prefix}-pied-piper-pp:before { content: $fa-var-pied-piper-pp; } .#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } .#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } .#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } @@ -487,11 +488,14 @@ .#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } .#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } .#{$fa-css-prefix}-ra:before, +.#{$fa-css-prefix}-resistance:before, .#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } .#{$fa-css-prefix}-ge:before, .#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } .#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } .#{$fa-css-prefix}-git:before { content: $fa-var-git; } +.#{$fa-css-prefix}-y-combinator-square:before, +.#{$fa-css-prefix}-yc-square:before, .#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } .#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } .#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } @@ -502,7 +506,6 @@ .#{$fa-css-prefix}-send-o:before, .#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } .#{$fa-css-prefix}-history:before { content: $fa-var-history; } -.#{$fa-css-prefix}-genderless:before, .#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } .#{$fa-css-prefix}-header:before { content: $fa-var-header; } .#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } @@ -573,6 +576,7 @@ .#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } .#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } .#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } +.#{$fa-css-prefix}-intersex:before, .#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } .#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } .#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } @@ -582,6 +586,7 @@ .#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } .#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } .#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } +.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; } .#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } .#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } .#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } @@ -594,3 +599,191 @@ .#{$fa-css-prefix}-train:before { content: $fa-var-train; } .#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } .#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } +.#{$fa-css-prefix}-yc:before, +.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; } +.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; } +.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } +.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } +.#{$fa-css-prefix}-battery-4:before, +.#{$fa-css-prefix}-battery:before, +.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } +.#{$fa-css-prefix}-battery-3:before, +.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } +.#{$fa-css-prefix}-battery-2:before, +.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; } +.#{$fa-css-prefix}-battery-1:before, +.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; } +.#{$fa-css-prefix}-battery-0:before, +.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; } +.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; } +.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; } +.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; } +.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; } +.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; } +.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; } +.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; } +.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; } +.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; } +.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; } +.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; } +.#{$fa-css-prefix}-hourglass-1:before, +.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; } +.#{$fa-css-prefix}-hourglass-2:before, +.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; } +.#{$fa-css-prefix}-hourglass-3:before, +.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; } +.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; } +.#{$fa-css-prefix}-hand-grab-o:before, +.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; } +.#{$fa-css-prefix}-hand-stop-o:before, +.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; } +.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; } +.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; } +.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; } +.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; } +.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; } +.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; } +.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; } +.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; } +.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; } +.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; } +.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; } +.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; } +.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; } +.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; } +.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; } +.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; } +.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; } +.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; } +.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; } +.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; } +.#{$fa-css-prefix}-tv:before, +.#{$fa-css-prefix}-television:before { content: $fa-var-television; } +.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; } +.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; } +.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; } +.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; } +.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; } +.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; } +.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; } +.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; } +.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; } +.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; } +.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; } +.#{$fa-css-prefix}-map:before { content: $fa-var-map; } +.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; } +.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; } +.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; } +.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; } +.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; } +.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; } +.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; } +.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; } +.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; } +.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; } +.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; } +.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; } +.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; } +.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; } +.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; } +.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; } +.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; } +.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; } +.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; } +.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; } +.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; } +.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; } +.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; } +.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; } +.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; } +.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; } +.#{$fa-css-prefix}-gitlab:before { content: $fa-var-gitlab; } +.#{$fa-css-prefix}-wpbeginner:before { content: $fa-var-wpbeginner; } +.#{$fa-css-prefix}-wpforms:before { content: $fa-var-wpforms; } +.#{$fa-css-prefix}-envira:before { content: $fa-var-envira; } +.#{$fa-css-prefix}-universal-access:before { content: $fa-var-universal-access; } +.#{$fa-css-prefix}-wheelchair-alt:before { content: $fa-var-wheelchair-alt; } +.#{$fa-css-prefix}-question-circle-o:before { content: $fa-var-question-circle-o; } +.#{$fa-css-prefix}-blind:before { content: $fa-var-blind; } +.#{$fa-css-prefix}-audio-description:before { content: $fa-var-audio-description; } +.#{$fa-css-prefix}-volume-control-phone:before { content: $fa-var-volume-control-phone; } +.#{$fa-css-prefix}-braille:before { content: $fa-var-braille; } +.#{$fa-css-prefix}-assistive-listening-systems:before { content: $fa-var-assistive-listening-systems; } +.#{$fa-css-prefix}-asl-interpreting:before, +.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: $fa-var-american-sign-language-interpreting; } +.#{$fa-css-prefix}-deafness:before, +.#{$fa-css-prefix}-hard-of-hearing:before, +.#{$fa-css-prefix}-deaf:before { content: $fa-var-deaf; } +.#{$fa-css-prefix}-glide:before { content: $fa-var-glide; } +.#{$fa-css-prefix}-glide-g:before { content: $fa-var-glide-g; } +.#{$fa-css-prefix}-signing:before, +.#{$fa-css-prefix}-sign-language:before { content: $fa-var-sign-language; } +.#{$fa-css-prefix}-low-vision:before { content: $fa-var-low-vision; } +.#{$fa-css-prefix}-viadeo:before { content: $fa-var-viadeo; } +.#{$fa-css-prefix}-viadeo-square:before { content: $fa-var-viadeo-square; } +.#{$fa-css-prefix}-snapchat:before { content: $fa-var-snapchat; } +.#{$fa-css-prefix}-snapchat-ghost:before { content: $fa-var-snapchat-ghost; } +.#{$fa-css-prefix}-snapchat-square:before { content: $fa-var-snapchat-square; } +.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } +.#{$fa-css-prefix}-first-order:before { content: $fa-var-first-order; } +.#{$fa-css-prefix}-yoast:before { content: $fa-var-yoast; } +.#{$fa-css-prefix}-themeisle:before { content: $fa-var-themeisle; } +.#{$fa-css-prefix}-google-plus-circle:before, +.#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; } +.#{$fa-css-prefix}-fa:before, +.#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; } +.#{$fa-css-prefix}-handshake-o:before { content: $fa-var-handshake-o; } +.#{$fa-css-prefix}-envelope-open:before { content: $fa-var-envelope-open; } +.#{$fa-css-prefix}-envelope-open-o:before { content: $fa-var-envelope-open-o; } +.#{$fa-css-prefix}-linode:before { content: $fa-var-linode; } +.#{$fa-css-prefix}-address-book:before { content: $fa-var-address-book; } +.#{$fa-css-prefix}-address-book-o:before { content: $fa-var-address-book-o; } +.#{$fa-css-prefix}-vcard:before, +.#{$fa-css-prefix}-address-card:before { content: $fa-var-address-card; } +.#{$fa-css-prefix}-vcard-o:before, +.#{$fa-css-prefix}-address-card-o:before { content: $fa-var-address-card-o; } +.#{$fa-css-prefix}-user-circle:before { content: $fa-var-user-circle; } +.#{$fa-css-prefix}-user-circle-o:before { content: $fa-var-user-circle-o; } +.#{$fa-css-prefix}-user-o:before { content: $fa-var-user-o; } +.#{$fa-css-prefix}-id-badge:before { content: $fa-var-id-badge; } +.#{$fa-css-prefix}-drivers-license:before, +.#{$fa-css-prefix}-id-card:before { content: $fa-var-id-card; } +.#{$fa-css-prefix}-drivers-license-o:before, +.#{$fa-css-prefix}-id-card-o:before { content: $fa-var-id-card-o; } +.#{$fa-css-prefix}-quora:before { content: $fa-var-quora; } +.#{$fa-css-prefix}-free-code-camp:before { content: $fa-var-free-code-camp; } +.#{$fa-css-prefix}-telegram:before { content: $fa-var-telegram; } +.#{$fa-css-prefix}-thermometer-4:before, +.#{$fa-css-prefix}-thermometer:before, +.#{$fa-css-prefix}-thermometer-full:before { content: $fa-var-thermometer-full; } +.#{$fa-css-prefix}-thermometer-3:before, +.#{$fa-css-prefix}-thermometer-three-quarters:before { content: $fa-var-thermometer-three-quarters; } +.#{$fa-css-prefix}-thermometer-2:before, +.#{$fa-css-prefix}-thermometer-half:before { content: $fa-var-thermometer-half; } +.#{$fa-css-prefix}-thermometer-1:before, +.#{$fa-css-prefix}-thermometer-quarter:before { content: $fa-var-thermometer-quarter; } +.#{$fa-css-prefix}-thermometer-0:before, +.#{$fa-css-prefix}-thermometer-empty:before { content: $fa-var-thermometer-empty; } +.#{$fa-css-prefix}-shower:before { content: $fa-var-shower; } +.#{$fa-css-prefix}-bathtub:before, +.#{$fa-css-prefix}-s15:before, +.#{$fa-css-prefix}-bath:before { content: $fa-var-bath; } +.#{$fa-css-prefix}-podcast:before { content: $fa-var-podcast; } +.#{$fa-css-prefix}-window-maximize:before { content: $fa-var-window-maximize; } +.#{$fa-css-prefix}-window-minimize:before { content: $fa-var-window-minimize; } +.#{$fa-css-prefix}-window-restore:before { content: $fa-var-window-restore; } +.#{$fa-css-prefix}-times-rectangle:before, +.#{$fa-css-prefix}-window-close:before { content: $fa-var-window-close; } +.#{$fa-css-prefix}-times-rectangle-o:before, +.#{$fa-css-prefix}-window-close-o:before { content: $fa-var-window-close-o; } +.#{$fa-css-prefix}-bandcamp:before { content: $fa-var-bandcamp; } +.#{$fa-css-prefix}-grav:before { content: $fa-var-grav; } +.#{$fa-css-prefix}-etsy:before { content: $fa-var-etsy; } +.#{$fa-css-prefix}-imdb:before { content: $fa-var-imdb; } +.#{$fa-css-prefix}-ravelry:before { content: $fa-var-ravelry; } +.#{$fa-css-prefix}-eercast:before { content: $fa-var-eercast; } +.#{$fa-css-prefix}-microchip:before { content: $fa-var-microchip; } +.#{$fa-css-prefix}-snowflake-o:before { content: $fa-var-snowflake-o; } +.#{$fa-css-prefix}-superpowers:before { content: $fa-var-superpowers; } +.#{$fa-css-prefix}-wpexplorer:before { content: $fa-var-wpexplorer; } +.#{$fa-css-prefix}-meetup:before { content: $fa-var-meetup; } diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_larger.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_larger.scss similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_larger.scss rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_larger.scss diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_list.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_list.scss similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_list.scss rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_list.scss diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_mixins.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_mixins.scss new file mode 100644 index 0000000000..c3bbd5745d --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_mixins.scss @@ -0,0 +1,60 @@ +// Mixins +// -------------------------- + +@mixin fa-icon() { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} + +@mixin fa-icon-rotate($degrees, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; + -webkit-transform: rotate($degrees); + -ms-transform: rotate($degrees); + transform: rotate($degrees); +} + +@mixin fa-icon-flip($horiz, $vert, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; + -webkit-transform: scale($horiz, $vert); + -ms-transform: scale($horiz, $vert); + transform: scale($horiz, $vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +@mixin sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +@mixin sr-only-focusable { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_path.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_path.scss similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_path.scss rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_path.scss diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_rotated-flipped.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_rotated-flipped.scss similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_rotated-flipped.scss rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_rotated-flipped.scss diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_screen-reader.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_screen-reader.scss new file mode 100644 index 0000000000..637426f0da --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_screen-reader.scss @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { @include sr-only(); } +.sr-only-focusable { @include sr-only-focusable(); } diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_stacked.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_stacked.scss similarity index 100% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_stacked.scss rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_stacked.scss diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_variables.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_variables.scss similarity index 73% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_variables.scss rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_variables.scss index 9b7210e23b..498fc4a087 100644 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/_variables.scss +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/_variables.scss @@ -3,20 +3,28 @@ $fa-font-path: "../fonts" !default; $fa-font-size-base: 14px !default; -//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts" !default; // for referencing Bootstrap CDN font files directly +$fa-line-height-base: 1 !default; +//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts" !default; // for referencing Bootstrap CDN font files directly $fa-css-prefix: fa !default; -$fa-version: "4.3.0" !default; +$fa-version: "4.7.0" !default; $fa-border-color: #eee !default; $fa-inverse: #fff !default; $fa-li-width: (30em / 14) !default; +$fa-var-500px: "\f26e"; +$fa-var-address-book: "\f2b9"; +$fa-var-address-book-o: "\f2ba"; +$fa-var-address-card: "\f2bb"; +$fa-var-address-card-o: "\f2bc"; $fa-var-adjust: "\f042"; $fa-var-adn: "\f170"; $fa-var-align-center: "\f037"; $fa-var-align-justify: "\f039"; $fa-var-align-left: "\f036"; $fa-var-align-right: "\f038"; +$fa-var-amazon: "\f270"; $fa-var-ambulance: "\f0f9"; +$fa-var-american-sign-language-interpreting: "\f2a3"; $fa-var-anchor: "\f13d"; $fa-var-android: "\f17b"; $fa-var-angellist: "\f209"; @@ -47,16 +55,34 @@ $fa-var-arrows: "\f047"; $fa-var-arrows-alt: "\f0b2"; $fa-var-arrows-h: "\f07e"; $fa-var-arrows-v: "\f07d"; +$fa-var-asl-interpreting: "\f2a3"; +$fa-var-assistive-listening-systems: "\f2a2"; $fa-var-asterisk: "\f069"; $fa-var-at: "\f1fa"; +$fa-var-audio-description: "\f29e"; $fa-var-automobile: "\f1b9"; $fa-var-backward: "\f04a"; +$fa-var-balance-scale: "\f24e"; $fa-var-ban: "\f05e"; +$fa-var-bandcamp: "\f2d5"; $fa-var-bank: "\f19c"; $fa-var-bar-chart: "\f080"; $fa-var-bar-chart-o: "\f080"; $fa-var-barcode: "\f02a"; $fa-var-bars: "\f0c9"; +$fa-var-bath: "\f2cd"; +$fa-var-bathtub: "\f2cd"; +$fa-var-battery: "\f240"; +$fa-var-battery-0: "\f244"; +$fa-var-battery-1: "\f243"; +$fa-var-battery-2: "\f242"; +$fa-var-battery-3: "\f241"; +$fa-var-battery-4: "\f240"; +$fa-var-battery-empty: "\f244"; +$fa-var-battery-full: "\f240"; +$fa-var-battery-half: "\f242"; +$fa-var-battery-quarter: "\f243"; +$fa-var-battery-three-quarters: "\f241"; $fa-var-bed: "\f236"; $fa-var-beer: "\f0fc"; $fa-var-behance: "\f1b4"; @@ -71,12 +97,17 @@ $fa-var-birthday-cake: "\f1fd"; $fa-var-bitbucket: "\f171"; $fa-var-bitbucket-square: "\f172"; $fa-var-bitcoin: "\f15a"; +$fa-var-black-tie: "\f27e"; +$fa-var-blind: "\f29d"; +$fa-var-bluetooth: "\f293"; +$fa-var-bluetooth-b: "\f294"; $fa-var-bold: "\f032"; $fa-var-bolt: "\f0e7"; $fa-var-bomb: "\f1e2"; $fa-var-book: "\f02d"; $fa-var-bookmark: "\f02e"; $fa-var-bookmark-o: "\f097"; +$fa-var-braille: "\f2a1"; $fa-var-briefcase: "\f0b1"; $fa-var-btc: "\f15a"; $fa-var-bug: "\f188"; @@ -89,7 +120,11 @@ $fa-var-buysellads: "\f20d"; $fa-var-cab: "\f1ba"; $fa-var-calculator: "\f1ec"; $fa-var-calendar: "\f073"; +$fa-var-calendar-check-o: "\f274"; +$fa-var-calendar-minus-o: "\f272"; $fa-var-calendar-o: "\f133"; +$fa-var-calendar-plus-o: "\f271"; +$fa-var-calendar-times-o: "\f273"; $fa-var-camera: "\f030"; $fa-var-camera-retro: "\f083"; $fa-var-car: "\f1b9"; @@ -105,7 +140,9 @@ $fa-var-cart-arrow-down: "\f218"; $fa-var-cart-plus: "\f217"; $fa-var-cc: "\f20a"; $fa-var-cc-amex: "\f1f3"; +$fa-var-cc-diners-club: "\f24c"; $fa-var-cc-discover: "\f1f2"; +$fa-var-cc-jcb: "\f24b"; $fa-var-cc-mastercard: "\f1f1"; $fa-var-cc-paypal: "\f1f4"; $fa-var-cc-stripe: "\f1f5"; @@ -127,12 +164,14 @@ $fa-var-chevron-left: "\f053"; $fa-var-chevron-right: "\f054"; $fa-var-chevron-up: "\f077"; $fa-var-child: "\f1ae"; +$fa-var-chrome: "\f268"; $fa-var-circle: "\f111"; $fa-var-circle-o: "\f10c"; $fa-var-circle-o-notch: "\f1ce"; $fa-var-circle-thin: "\f1db"; $fa-var-clipboard: "\f0ea"; $fa-var-clock-o: "\f017"; +$fa-var-clone: "\f24d"; $fa-var-close: "\f00d"; $fa-var-cloud: "\f0c2"; $fa-var-cloud-download: "\f0ed"; @@ -141,20 +180,26 @@ $fa-var-cny: "\f157"; $fa-var-code: "\f121"; $fa-var-code-fork: "\f126"; $fa-var-codepen: "\f1cb"; +$fa-var-codiepie: "\f284"; $fa-var-coffee: "\f0f4"; $fa-var-cog: "\f013"; $fa-var-cogs: "\f085"; $fa-var-columns: "\f0db"; $fa-var-comment: "\f075"; $fa-var-comment-o: "\f0e5"; +$fa-var-commenting: "\f27a"; +$fa-var-commenting-o: "\f27b"; $fa-var-comments: "\f086"; $fa-var-comments-o: "\f0e6"; $fa-var-compass: "\f14e"; $fa-var-compress: "\f066"; $fa-var-connectdevelop: "\f20e"; +$fa-var-contao: "\f26d"; $fa-var-copy: "\f0c5"; $fa-var-copyright: "\f1f9"; +$fa-var-creative-commons: "\f25e"; $fa-var-credit-card: "\f09d"; +$fa-var-credit-card-alt: "\f283"; $fa-var-crop: "\f125"; $fa-var-crosshairs: "\f05b"; $fa-var-css3: "\f13c"; @@ -165,6 +210,8 @@ $fa-var-cutlery: "\f0f5"; $fa-var-dashboard: "\f0e4"; $fa-var-dashcube: "\f210"; $fa-var-database: "\f1c0"; +$fa-var-deaf: "\f2a4"; +$fa-var-deafness: "\f2a4"; $fa-var-dedent: "\f03b"; $fa-var-delicious: "\f1a5"; $fa-var-desktop: "\f108"; @@ -175,17 +222,25 @@ $fa-var-dollar: "\f155"; $fa-var-dot-circle-o: "\f192"; $fa-var-download: "\f019"; $fa-var-dribbble: "\f17d"; +$fa-var-drivers-license: "\f2c2"; +$fa-var-drivers-license-o: "\f2c3"; $fa-var-dropbox: "\f16b"; $fa-var-drupal: "\f1a9"; +$fa-var-edge: "\f282"; $fa-var-edit: "\f044"; +$fa-var-eercast: "\f2da"; $fa-var-eject: "\f052"; $fa-var-ellipsis-h: "\f141"; $fa-var-ellipsis-v: "\f142"; $fa-var-empire: "\f1d1"; $fa-var-envelope: "\f0e0"; $fa-var-envelope-o: "\f003"; +$fa-var-envelope-open: "\f2b6"; +$fa-var-envelope-open-o: "\f2b7"; $fa-var-envelope-square: "\f199"; +$fa-var-envira: "\f299"; $fa-var-eraser: "\f12d"; +$fa-var-etsy: "\f2d7"; $fa-var-eur: "\f153"; $fa-var-euro: "\f153"; $fa-var-exchange: "\f0ec"; @@ -193,11 +248,13 @@ $fa-var-exclamation: "\f12a"; $fa-var-exclamation-circle: "\f06a"; $fa-var-exclamation-triangle: "\f071"; $fa-var-expand: "\f065"; +$fa-var-expeditedssl: "\f23e"; $fa-var-external-link: "\f08e"; $fa-var-external-link-square: "\f14c"; $fa-var-eye: "\f06e"; $fa-var-eye-slash: "\f070"; $fa-var-eyedropper: "\f1fb"; +$fa-var-fa: "\f2b4"; $fa-var-facebook: "\f09a"; $fa-var-facebook-f: "\f09a"; $fa-var-facebook-official: "\f230"; @@ -205,6 +262,7 @@ $fa-var-facebook-square: "\f082"; $fa-var-fast-backward: "\f049"; $fa-var-fast-forward: "\f050"; $fa-var-fax: "\f1ac"; +$fa-var-feed: "\f09e"; $fa-var-female: "\f182"; $fa-var-fighter-jet: "\f0fb"; $fa-var-file: "\f15b"; @@ -230,6 +288,8 @@ $fa-var-film: "\f008"; $fa-var-filter: "\f0b0"; $fa-var-fire: "\f06d"; $fa-var-fire-extinguisher: "\f134"; +$fa-var-firefox: "\f269"; +$fa-var-first-order: "\f2b0"; $fa-var-flag: "\f024"; $fa-var-flag-checkered: "\f11e"; $fa-var-flag-o: "\f11d"; @@ -242,9 +302,13 @@ $fa-var-folder-o: "\f114"; $fa-var-folder-open: "\f07c"; $fa-var-folder-open-o: "\f115"; $fa-var-font: "\f031"; +$fa-var-font-awesome: "\f2b4"; +$fa-var-fonticons: "\f280"; +$fa-var-fort-awesome: "\f286"; $fa-var-forumbee: "\f211"; $fa-var-forward: "\f04e"; $fa-var-foursquare: "\f180"; +$fa-var-free-code-camp: "\f2c5"; $fa-var-frown-o: "\f119"; $fa-var-futbol-o: "\f1e3"; $fa-var-gamepad: "\f11b"; @@ -253,29 +317,50 @@ $fa-var-gbp: "\f154"; $fa-var-ge: "\f1d1"; $fa-var-gear: "\f013"; $fa-var-gears: "\f085"; -$fa-var-genderless: "\f1db"; +$fa-var-genderless: "\f22d"; +$fa-var-get-pocket: "\f265"; +$fa-var-gg: "\f260"; +$fa-var-gg-circle: "\f261"; $fa-var-gift: "\f06b"; $fa-var-git: "\f1d3"; $fa-var-git-square: "\f1d2"; $fa-var-github: "\f09b"; $fa-var-github-alt: "\f113"; $fa-var-github-square: "\f092"; +$fa-var-gitlab: "\f296"; $fa-var-gittip: "\f184"; $fa-var-glass: "\f000"; +$fa-var-glide: "\f2a5"; +$fa-var-glide-g: "\f2a6"; $fa-var-globe: "\f0ac"; $fa-var-google: "\f1a0"; $fa-var-google-plus: "\f0d5"; +$fa-var-google-plus-circle: "\f2b3"; +$fa-var-google-plus-official: "\f2b3"; $fa-var-google-plus-square: "\f0d4"; $fa-var-google-wallet: "\f1ee"; $fa-var-graduation-cap: "\f19d"; $fa-var-gratipay: "\f184"; +$fa-var-grav: "\f2d6"; $fa-var-group: "\f0c0"; $fa-var-h-square: "\f0fd"; $fa-var-hacker-news: "\f1d4"; +$fa-var-hand-grab-o: "\f255"; +$fa-var-hand-lizard-o: "\f258"; $fa-var-hand-o-down: "\f0a7"; $fa-var-hand-o-left: "\f0a5"; $fa-var-hand-o-right: "\f0a4"; $fa-var-hand-o-up: "\f0a6"; +$fa-var-hand-paper-o: "\f256"; +$fa-var-hand-peace-o: "\f25b"; +$fa-var-hand-pointer-o: "\f25a"; +$fa-var-hand-rock-o: "\f255"; +$fa-var-hand-scissors-o: "\f257"; +$fa-var-hand-spock-o: "\f259"; +$fa-var-hand-stop-o: "\f256"; +$fa-var-handshake-o: "\f2b5"; +$fa-var-hard-of-hearing: "\f2a4"; +$fa-var-hashtag: "\f292"; $fa-var-hdd-o: "\f0a0"; $fa-var-header: "\f1dc"; $fa-var-headphones: "\f025"; @@ -286,16 +371,33 @@ $fa-var-history: "\f1da"; $fa-var-home: "\f015"; $fa-var-hospital-o: "\f0f8"; $fa-var-hotel: "\f236"; +$fa-var-hourglass: "\f254"; +$fa-var-hourglass-1: "\f251"; +$fa-var-hourglass-2: "\f252"; +$fa-var-hourglass-3: "\f253"; +$fa-var-hourglass-end: "\f253"; +$fa-var-hourglass-half: "\f252"; +$fa-var-hourglass-o: "\f250"; +$fa-var-hourglass-start: "\f251"; +$fa-var-houzz: "\f27c"; $fa-var-html5: "\f13b"; +$fa-var-i-cursor: "\f246"; +$fa-var-id-badge: "\f2c1"; +$fa-var-id-card: "\f2c2"; +$fa-var-id-card-o: "\f2c3"; $fa-var-ils: "\f20b"; $fa-var-image: "\f03e"; +$fa-var-imdb: "\f2d8"; $fa-var-inbox: "\f01c"; $fa-var-indent: "\f03c"; +$fa-var-industry: "\f275"; $fa-var-info: "\f129"; $fa-var-info-circle: "\f05a"; $fa-var-inr: "\f156"; $fa-var-instagram: "\f16d"; $fa-var-institution: "\f19c"; +$fa-var-internet-explorer: "\f26b"; +$fa-var-intersex: "\f224"; $fa-var-ioxhost: "\f208"; $fa-var-italic: "\f033"; $fa-var-joomla: "\f1aa"; @@ -323,6 +425,7 @@ $fa-var-line-chart: "\f201"; $fa-var-link: "\f0c1"; $fa-var-linkedin: "\f0e1"; $fa-var-linkedin-square: "\f08c"; +$fa-var-linode: "\f2b8"; $fa-var-linux: "\f17c"; $fa-var-list: "\f03a"; $fa-var-list-alt: "\f022"; @@ -334,13 +437,18 @@ $fa-var-long-arrow-down: "\f175"; $fa-var-long-arrow-left: "\f177"; $fa-var-long-arrow-right: "\f178"; $fa-var-long-arrow-up: "\f176"; +$fa-var-low-vision: "\f2a8"; $fa-var-magic: "\f0d0"; $fa-var-magnet: "\f076"; $fa-var-mail-forward: "\f064"; $fa-var-mail-reply: "\f112"; $fa-var-mail-reply-all: "\f122"; $fa-var-male: "\f183"; +$fa-var-map: "\f279"; $fa-var-map-marker: "\f041"; +$fa-var-map-o: "\f278"; +$fa-var-map-pin: "\f276"; +$fa-var-map-signs: "\f277"; $fa-var-mars: "\f222"; $fa-var-mars-double: "\f227"; $fa-var-mars-stroke: "\f229"; @@ -350,25 +458,37 @@ $fa-var-maxcdn: "\f136"; $fa-var-meanpath: "\f20c"; $fa-var-medium: "\f23a"; $fa-var-medkit: "\f0fa"; +$fa-var-meetup: "\f2e0"; $fa-var-meh-o: "\f11a"; $fa-var-mercury: "\f223"; +$fa-var-microchip: "\f2db"; $fa-var-microphone: "\f130"; $fa-var-microphone-slash: "\f131"; $fa-var-minus: "\f068"; $fa-var-minus-circle: "\f056"; $fa-var-minus-square: "\f146"; $fa-var-minus-square-o: "\f147"; +$fa-var-mixcloud: "\f289"; $fa-var-mobile: "\f10b"; $fa-var-mobile-phone: "\f10b"; +$fa-var-modx: "\f285"; $fa-var-money: "\f0d6"; $fa-var-moon-o: "\f186"; $fa-var-mortar-board: "\f19d"; $fa-var-motorcycle: "\f21c"; +$fa-var-mouse-pointer: "\f245"; $fa-var-music: "\f001"; $fa-var-navicon: "\f0c9"; $fa-var-neuter: "\f22c"; $fa-var-newspaper-o: "\f1ea"; +$fa-var-object-group: "\f247"; +$fa-var-object-ungroup: "\f248"; +$fa-var-odnoklassniki: "\f263"; +$fa-var-odnoklassniki-square: "\f264"; +$fa-var-opencart: "\f23d"; $fa-var-openid: "\f19b"; +$fa-var-opera: "\f26a"; +$fa-var-optin-monster: "\f23c"; $fa-var-outdent: "\f03b"; $fa-var-pagelines: "\f18c"; $fa-var-paint-brush: "\f1fc"; @@ -378,18 +498,22 @@ $fa-var-paperclip: "\f0c6"; $fa-var-paragraph: "\f1dd"; $fa-var-paste: "\f0ea"; $fa-var-pause: "\f04c"; +$fa-var-pause-circle: "\f28b"; +$fa-var-pause-circle-o: "\f28c"; $fa-var-paw: "\f1b0"; $fa-var-paypal: "\f1ed"; $fa-var-pencil: "\f040"; $fa-var-pencil-square: "\f14b"; $fa-var-pencil-square-o: "\f044"; +$fa-var-percent: "\f295"; $fa-var-phone: "\f095"; $fa-var-phone-square: "\f098"; $fa-var-photo: "\f03e"; $fa-var-picture-o: "\f03e"; $fa-var-pie-chart: "\f200"; -$fa-var-pied-piper: "\f1a7"; +$fa-var-pied-piper: "\f2ae"; $fa-var-pied-piper-alt: "\f1a8"; +$fa-var-pied-piper-pp: "\f1a7"; $fa-var-pinterest: "\f0d2"; $fa-var-pinterest-p: "\f231"; $fa-var-pinterest-square: "\f0d3"; @@ -402,28 +526,36 @@ $fa-var-plus: "\f067"; $fa-var-plus-circle: "\f055"; $fa-var-plus-square: "\f0fe"; $fa-var-plus-square-o: "\f196"; +$fa-var-podcast: "\f2ce"; $fa-var-power-off: "\f011"; $fa-var-print: "\f02f"; +$fa-var-product-hunt: "\f288"; $fa-var-puzzle-piece: "\f12e"; $fa-var-qq: "\f1d6"; $fa-var-qrcode: "\f029"; $fa-var-question: "\f128"; $fa-var-question-circle: "\f059"; +$fa-var-question-circle-o: "\f29c"; +$fa-var-quora: "\f2c4"; $fa-var-quote-left: "\f10d"; $fa-var-quote-right: "\f10e"; $fa-var-ra: "\f1d0"; $fa-var-random: "\f074"; +$fa-var-ravelry: "\f2d9"; $fa-var-rebel: "\f1d0"; $fa-var-recycle: "\f1b8"; $fa-var-reddit: "\f1a1"; +$fa-var-reddit-alien: "\f281"; $fa-var-reddit-square: "\f1a2"; $fa-var-refresh: "\f021"; +$fa-var-registered: "\f25d"; $fa-var-remove: "\f00d"; $fa-var-renren: "\f18b"; $fa-var-reorder: "\f0c9"; $fa-var-repeat: "\f01e"; $fa-var-reply: "\f112"; $fa-var-reply-all: "\f122"; +$fa-var-resistance: "\f1d0"; $fa-var-retweet: "\f079"; $fa-var-rmb: "\f157"; $fa-var-road: "\f018"; @@ -436,8 +568,11 @@ $fa-var-rss-square: "\f143"; $fa-var-rub: "\f158"; $fa-var-ruble: "\f158"; $fa-var-rupee: "\f156"; +$fa-var-s15: "\f2cd"; +$fa-var-safari: "\f267"; $fa-var-save: "\f0c7"; $fa-var-scissors: "\f0c4"; +$fa-var-scribd: "\f28a"; $fa-var-search: "\f002"; $fa-var-search-minus: "\f010"; $fa-var-search-plus: "\f00e"; @@ -455,10 +590,15 @@ $fa-var-sheqel: "\f20b"; $fa-var-shield: "\f132"; $fa-var-ship: "\f21a"; $fa-var-shirtsinbulk: "\f214"; +$fa-var-shopping-bag: "\f290"; +$fa-var-shopping-basket: "\f291"; $fa-var-shopping-cart: "\f07a"; +$fa-var-shower: "\f2cc"; $fa-var-sign-in: "\f090"; +$fa-var-sign-language: "\f2a7"; $fa-var-sign-out: "\f08b"; $fa-var-signal: "\f012"; +$fa-var-signing: "\f2a7"; $fa-var-simplybuilt: "\f215"; $fa-var-sitemap: "\f0e8"; $fa-var-skyatlas: "\f216"; @@ -467,6 +607,10 @@ $fa-var-slack: "\f198"; $fa-var-sliders: "\f1de"; $fa-var-slideshare: "\f1e7"; $fa-var-smile-o: "\f118"; +$fa-var-snapchat: "\f2ab"; +$fa-var-snapchat-ghost: "\f2ac"; +$fa-var-snapchat-square: "\f2ad"; +$fa-var-snowflake-o: "\f2dc"; $fa-var-soccer-ball-o: "\f1e3"; $fa-var-sort: "\f0dc"; $fa-var-sort-alpha-asc: "\f15d"; @@ -499,7 +643,11 @@ $fa-var-steam-square: "\f1b7"; $fa-var-step-backward: "\f048"; $fa-var-step-forward: "\f051"; $fa-var-stethoscope: "\f0f1"; +$fa-var-sticky-note: "\f249"; +$fa-var-sticky-note-o: "\f24a"; $fa-var-stop: "\f04d"; +$fa-var-stop-circle: "\f28d"; +$fa-var-stop-circle-o: "\f28e"; $fa-var-street-view: "\f21d"; $fa-var-strikethrough: "\f0cc"; $fa-var-stumbleupon: "\f1a4"; @@ -508,6 +656,7 @@ $fa-var-subscript: "\f12c"; $fa-var-subway: "\f239"; $fa-var-suitcase: "\f0f2"; $fa-var-sun-o: "\f185"; +$fa-var-superpowers: "\f2dd"; $fa-var-superscript: "\f12b"; $fa-var-support: "\f1cd"; $fa-var-table: "\f0ce"; @@ -517,6 +666,8 @@ $fa-var-tag: "\f02b"; $fa-var-tags: "\f02c"; $fa-var-tasks: "\f0ae"; $fa-var-taxi: "\f1ba"; +$fa-var-telegram: "\f2c6"; +$fa-var-television: "\f26c"; $fa-var-tencent-weibo: "\f1d5"; $fa-var-terminal: "\f120"; $fa-var-text-height: "\f034"; @@ -524,6 +675,18 @@ $fa-var-text-width: "\f035"; $fa-var-th: "\f00a"; $fa-var-th-large: "\f009"; $fa-var-th-list: "\f00b"; +$fa-var-themeisle: "\f2b2"; +$fa-var-thermometer: "\f2c7"; +$fa-var-thermometer-0: "\f2cb"; +$fa-var-thermometer-1: "\f2ca"; +$fa-var-thermometer-2: "\f2c9"; +$fa-var-thermometer-3: "\f2c8"; +$fa-var-thermometer-4: "\f2c7"; +$fa-var-thermometer-empty: "\f2cb"; +$fa-var-thermometer-full: "\f2c7"; +$fa-var-thermometer-half: "\f2c9"; +$fa-var-thermometer-quarter: "\f2ca"; +$fa-var-thermometer-three-quarters: "\f2c8"; $fa-var-thumb-tack: "\f08d"; $fa-var-thumbs-down: "\f165"; $fa-var-thumbs-o-down: "\f088"; @@ -533,6 +696,8 @@ $fa-var-ticket: "\f145"; $fa-var-times: "\f00d"; $fa-var-times-circle: "\f057"; $fa-var-times-circle-o: "\f05c"; +$fa-var-times-rectangle: "\f2d3"; +$fa-var-times-rectangle-o: "\f2d4"; $fa-var-tint: "\f043"; $fa-var-toggle-down: "\f150"; $fa-var-toggle-left: "\f191"; @@ -540,6 +705,7 @@ $fa-var-toggle-off: "\f204"; $fa-var-toggle-on: "\f205"; $fa-var-toggle-right: "\f152"; $fa-var-toggle-up: "\f151"; +$fa-var-trademark: "\f25c"; $fa-var-train: "\f238"; $fa-var-transgender: "\f224"; $fa-var-transgender-alt: "\f225"; @@ -547,6 +713,7 @@ $fa-var-trash: "\f1f8"; $fa-var-trash-o: "\f014"; $fa-var-tree: "\f1bb"; $fa-var-trello: "\f181"; +$fa-var-tripadvisor: "\f262"; $fa-var-trophy: "\f091"; $fa-var-truck: "\f0d1"; $fa-var-try: "\f195"; @@ -554,33 +721,45 @@ $fa-var-tty: "\f1e4"; $fa-var-tumblr: "\f173"; $fa-var-tumblr-square: "\f174"; $fa-var-turkish-lira: "\f195"; +$fa-var-tv: "\f26c"; $fa-var-twitch: "\f1e8"; $fa-var-twitter: "\f099"; $fa-var-twitter-square: "\f081"; $fa-var-umbrella: "\f0e9"; $fa-var-underline: "\f0cd"; $fa-var-undo: "\f0e2"; +$fa-var-universal-access: "\f29a"; $fa-var-university: "\f19c"; $fa-var-unlink: "\f127"; $fa-var-unlock: "\f09c"; $fa-var-unlock-alt: "\f13e"; $fa-var-unsorted: "\f0dc"; $fa-var-upload: "\f093"; +$fa-var-usb: "\f287"; $fa-var-usd: "\f155"; $fa-var-user: "\f007"; +$fa-var-user-circle: "\f2bd"; +$fa-var-user-circle-o: "\f2be"; $fa-var-user-md: "\f0f0"; +$fa-var-user-o: "\f2c0"; $fa-var-user-plus: "\f234"; $fa-var-user-secret: "\f21b"; $fa-var-user-times: "\f235"; $fa-var-users: "\f0c0"; +$fa-var-vcard: "\f2bb"; +$fa-var-vcard-o: "\f2bc"; $fa-var-venus: "\f221"; $fa-var-venus-double: "\f226"; $fa-var-venus-mars: "\f228"; $fa-var-viacoin: "\f237"; +$fa-var-viadeo: "\f2a9"; +$fa-var-viadeo-square: "\f2aa"; $fa-var-video-camera: "\f03d"; +$fa-var-vimeo: "\f27d"; $fa-var-vimeo-square: "\f194"; $fa-var-vine: "\f1ca"; $fa-var-vk: "\f189"; +$fa-var-volume-control-phone: "\f2a0"; $fa-var-volume-down: "\f027"; $fa-var-volume-off: "\f026"; $fa-var-volume-up: "\f028"; @@ -590,16 +769,31 @@ $fa-var-weibo: "\f18a"; $fa-var-weixin: "\f1d7"; $fa-var-whatsapp: "\f232"; $fa-var-wheelchair: "\f193"; +$fa-var-wheelchair-alt: "\f29b"; $fa-var-wifi: "\f1eb"; +$fa-var-wikipedia-w: "\f266"; +$fa-var-window-close: "\f2d3"; +$fa-var-window-close-o: "\f2d4"; +$fa-var-window-maximize: "\f2d0"; +$fa-var-window-minimize: "\f2d1"; +$fa-var-window-restore: "\f2d2"; $fa-var-windows: "\f17a"; $fa-var-won: "\f159"; $fa-var-wordpress: "\f19a"; +$fa-var-wpbeginner: "\f297"; +$fa-var-wpexplorer: "\f2de"; +$fa-var-wpforms: "\f298"; $fa-var-wrench: "\f0ad"; $fa-var-xing: "\f168"; $fa-var-xing-square: "\f169"; +$fa-var-y-combinator: "\f23b"; +$fa-var-y-combinator-square: "\f1d4"; $fa-var-yahoo: "\f19e"; +$fa-var-yc: "\f23b"; +$fa-var-yc-square: "\f1d4"; $fa-var-yelp: "\f1e9"; $fa-var-yen: "\f157"; +$fa-var-yoast: "\f2b1"; $fa-var-youtube: "\f167"; $fa-var-youtube-play: "\f16a"; $fa-var-youtube-square: "\f166"; diff --git a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/font-awesome.scss b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/font-awesome.scss similarity index 79% rename from mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/font-awesome.scss rename to mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/font-awesome.scss index 388ac6b0cd..f1c83aaa5d 100644 --- a/mayan/apps/appearance/static/appearance/packages/font-awesome-4.3.0/scss/font-awesome.scss +++ b/mayan/apps/appearance/static/appearance/packages/font-awesome-4.7.0/scss/font-awesome.scss @@ -1,5 +1,5 @@ /*! - * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ @@ -15,3 +15,4 @@ @import "rotated-flipped"; @import "stacked"; @import "icons"; +@import "screen-reader"; diff --git a/mayan/apps/appearance/templates/appearance/base.html b/mayan/apps/appearance/templates/appearance/base.html index ccf53112b1..57ab139e7e 100644 --- a/mayan/apps/appearance/templates/appearance/base.html +++ b/mayan/apps/appearance/templates/appearance/base.html @@ -22,8 +22,9 @@ {% compress css %} - - + + {# Disable base Bootstrap CSS, Flatly seems to include it already #} + {##} @@ -71,14 +72,19 @@ "); + this.element.attr('aria-activedescendant','j'+this._id+'_loading'); + } + this.load_node($.jstree.root, function (o, s) { + if(s) { + this.get_container_ul()[0].className = c; + if(this._firstChild(this.get_container_ul()[0])) { + this.element.attr('aria-activedescendant',this._firstChild(this.get_container_ul()[0]).id); + } + this.set_state($.extend(true, {}, this._data.core.state), function () { + /** + * triggered when a `refresh` call completes + * @event + * @name refresh.jstree + */ + this.trigger('refresh'); + }); + } + this._data.core.state = null; + }); + }, + /** + * refreshes a node in the tree (reload its children) all opened nodes inside that node are reloaded with calls to `load_node`. + * @name refresh_node(obj) + * @param {mixed} obj the node + * @trigger refresh_node.jstree + */ + refresh_node : function (obj) { + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + var opened = [], to_load = [], s = this._data.core.selected.concat([]); + to_load.push(obj.id); + if(obj.state.opened === true) { opened.push(obj.id); } + this.get_node(obj, true).find('.jstree-open').each(function() { to_load.push(this.id); opened.push(this.id); }); + this._load_nodes(to_load, $.proxy(function (nodes) { + this.open_node(opened, false, 0); + this.select_node(s); + /** + * triggered when a node is refreshed + * @event + * @name refresh_node.jstree + * @param {Object} node - the refreshed node + * @param {Array} nodes - an array of the IDs of the nodes that were reloaded + */ + this.trigger('refresh_node', { 'node' : obj, 'nodes' : nodes }); + }, this), false, true); + }, + /** + * set (change) the ID of a node + * @name set_id(obj, id) + * @param {mixed} obj the node + * @param {String} id the new ID + * @return {Boolean} + * @trigger set_id.jstree + */ + set_id : function (obj, id) { + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + var i, j, m = this._model.data, old = obj.id; + id = id.toString(); + // update parents (replace current ID with new one in children and children_d) + m[obj.parent].children[$.inArray(obj.id, m[obj.parent].children)] = id; + for(i = 0, j = obj.parents.length; i < j; i++) { + m[obj.parents[i]].children_d[$.inArray(obj.id, m[obj.parents[i]].children_d)] = id; + } + // update children (replace current ID with new one in parent and parents) + for(i = 0, j = obj.children.length; i < j; i++) { + m[obj.children[i]].parent = id; + } + for(i = 0, j = obj.children_d.length; i < j; i++) { + m[obj.children_d[i]].parents[$.inArray(obj.id, m[obj.children_d[i]].parents)] = id; + } + i = $.inArray(obj.id, this._data.core.selected); + if(i !== -1) { this._data.core.selected[i] = id; } + // update model and obj itself (obj.id, this._model.data[KEY]) + i = this.get_node(obj.id, true); + if(i) { + i.attr('id', id); //.children('.jstree-anchor').attr('id', id + '_anchor').end().attr('aria-labelledby', id + '_anchor'); + if(this.element.attr('aria-activedescendant') === obj.id) { + this.element.attr('aria-activedescendant', id); + } + } + delete m[obj.id]; + obj.id = id; + obj.li_attr.id = id; + m[id] = obj; + /** + * triggered when a node id value is changed + * @event + * @name set_id.jstree + * @param {Object} node + * @param {String} old the old id + */ + this.trigger('set_id',{ "node" : obj, "new" : obj.id, "old" : old }); + return true; + }, + /** + * get the text value of a node + * @name get_text(obj) + * @param {mixed} obj the node + * @return {String} + */ + get_text : function (obj) { + obj = this.get_node(obj); + return (!obj || obj.id === $.jstree.root) ? false : obj.text; + }, + /** + * set the text value of a node. Used internally, please use `rename_node(obj, val)`. + * @private + * @name set_text(obj, val) + * @param {mixed} obj the node, you can pass an array to set the text on multiple nodes + * @param {String} val the new text value + * @return {Boolean} + * @trigger set_text.jstree + */ + set_text : function (obj, val) { + var t1, t2; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.set_text(obj[t1], val); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + obj.text = val; + if(this.get_node(obj, true).length) { + this.redraw_node(obj.id); + } + /** + * triggered when a node text value is changed + * @event + * @name set_text.jstree + * @param {Object} obj + * @param {String} text the new value + */ + this.trigger('set_text',{ "obj" : obj, "text" : val }); + return true; + }, + /** + * gets a JSON representation of a node (or the whole tree) + * @name get_json([obj, options]) + * @param {mixed} obj + * @param {Object} options + * @param {Boolean} options.no_state do not return state information + * @param {Boolean} options.no_id do not return ID + * @param {Boolean} options.no_children do not include children + * @param {Boolean} options.no_data do not include node data + * @param {Boolean} options.no_li_attr do not include LI attributes + * @param {Boolean} options.no_a_attr do not include A attributes + * @param {Boolean} options.flat return flat JSON instead of nested + * @return {Object} + */ + get_json : function (obj, options, flat) { + obj = this.get_node(obj || $.jstree.root); + if(!obj) { return false; } + if(options && options.flat && !flat) { flat = []; } + var tmp = { + 'id' : obj.id, + 'text' : obj.text, + 'icon' : this.get_icon(obj), + 'li_attr' : $.extend(true, {}, obj.li_attr), + 'a_attr' : $.extend(true, {}, obj.a_attr), + 'state' : {}, + 'data' : options && options.no_data ? false : $.extend(true, {}, obj.data) + //( this.get_node(obj, true).length ? this.get_node(obj, true).data() : obj.data ), + }, i, j; + if(options && options.flat) { + tmp.parent = obj.parent; + } + else { + tmp.children = []; + } + if(!options || !options.no_state) { + for(i in obj.state) { + if(obj.state.hasOwnProperty(i)) { + tmp.state[i] = obj.state[i]; + } + } + } else { + delete tmp.state; + } + if(options && options.no_li_attr) { + delete tmp.li_attr; + } + if(options && options.no_a_attr) { + delete tmp.a_attr; + } + if(options && options.no_id) { + delete tmp.id; + if(tmp.li_attr && tmp.li_attr.id) { + delete tmp.li_attr.id; + } + if(tmp.a_attr && tmp.a_attr.id) { + delete tmp.a_attr.id; + } + } + if(options && options.flat && obj.id !== $.jstree.root) { + flat.push(tmp); + } + if(!options || !options.no_children) { + for(i = 0, j = obj.children.length; i < j; i++) { + if(options && options.flat) { + this.get_json(obj.children[i], options, flat); + } + else { + tmp.children.push(this.get_json(obj.children[i], options)); + } + } + } + return options && options.flat ? flat : (obj.id === $.jstree.root ? tmp.children : tmp); + }, + /** + * create a new node (do not confuse with load_node) + * @name create_node([par, node, pos, callback, is_loaded]) + * @param {mixed} par the parent node (to create a root node use either "#" (string) or `null`) + * @param {mixed} node the data for the new node (a valid JSON object, or a simple string with the name) + * @param {mixed} pos the index at which to insert the node, "first" and "last" are also supported, default is "last" + * @param {Function} callback a function to be called once the node is created + * @param {Boolean} is_loaded internal argument indicating if the parent node was succesfully loaded + * @return {String} the ID of the newly create node + * @trigger model.jstree, create_node.jstree + */ + create_node : function (par, node, pos, callback, is_loaded) { + if(par === null) { par = $.jstree.root; } + par = this.get_node(par); + if(!par) { return false; } + pos = pos === undefined ? "last" : pos; + if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { + return this.load_node(par, function () { this.create_node(par, node, pos, callback, true); }); + } + if(!node) { node = { "text" : this.get_string('New node') }; } + if(typeof node === "string") { node = { "text" : node }; } + if(node.text === undefined) { node.text = this.get_string('New node'); } + var tmp, dpc, i, j; + + if(par.id === $.jstree.root) { + if(pos === "before") { pos = "first"; } + if(pos === "after") { pos = "last"; } + } + switch(pos) { + case "before": + tmp = this.get_node(par.parent); + pos = $.inArray(par.id, tmp.children); + par = tmp; + break; + case "after" : + tmp = this.get_node(par.parent); + pos = $.inArray(par.id, tmp.children) + 1; + par = tmp; + break; + case "inside": + case "first": + pos = 0; + break; + case "last": + pos = par.children.length; + break; + default: + if(!pos) { pos = 0; } + break; + } + if(pos > par.children.length) { pos = par.children.length; } + if(!node.id) { node.id = true; } + if(!this.check("create_node", node, par, pos)) { + this.settings.core.error.call(this, this._data.core.last_error); + return false; + } + if(node.id === true) { delete node.id; } + node = this._parse_model_from_json(node, par.id, par.parents.concat()); + if(!node) { return false; } + tmp = this.get_node(node); + dpc = []; + dpc.push(node); + dpc = dpc.concat(tmp.children_d); + this.trigger('model', { "nodes" : dpc, "parent" : par.id }); + + par.children_d = par.children_d.concat(dpc); + for(i = 0, j = par.parents.length; i < j; i++) { + this._model.data[par.parents[i]].children_d = this._model.data[par.parents[i]].children_d.concat(dpc); + } + node = tmp; + tmp = []; + for(i = 0, j = par.children.length; i < j; i++) { + tmp[i >= pos ? i+1 : i] = par.children[i]; + } + tmp[pos] = node.id; + par.children = tmp; + + this.redraw_node(par, true); + if(callback) { callback.call(this, this.get_node(node)); } + /** + * triggered when a node is created + * @event + * @name create_node.jstree + * @param {Object} node + * @param {String} parent the parent's ID + * @param {Number} position the position of the new node among the parent's children + */ + this.trigger('create_node', { "node" : this.get_node(node), "parent" : par.id, "position" : pos }); + return node.id; + }, + /** + * set the text value of a node + * @name rename_node(obj, val) + * @param {mixed} obj the node, you can pass an array to rename multiple nodes to the same name + * @param {String} val the new text value + * @return {Boolean} + * @trigger rename_node.jstree + */ + rename_node : function (obj, val) { + var t1, t2, old; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.rename_node(obj[t1], val); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + old = obj.text; + if(!this.check("rename_node", obj, this.get_parent(obj), val)) { + this.settings.core.error.call(this, this._data.core.last_error); + return false; + } + this.set_text(obj, val); // .apply(this, Array.prototype.slice.call(arguments)) + /** + * triggered when a node is renamed + * @event + * @name rename_node.jstree + * @param {Object} node + * @param {String} text the new value + * @param {String} old the old value + */ + this.trigger('rename_node', { "node" : obj, "text" : val, "old" : old }); + return true; + }, + /** + * remove a node + * @name delete_node(obj) + * @param {mixed} obj the node, you can pass an array to delete multiple nodes + * @return {Boolean} + * @trigger delete_node.jstree, changed.jstree + */ + delete_node : function (obj) { + var t1, t2, par, pos, tmp, i, j, k, l, c, top, lft; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.delete_node(obj[t1]); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + par = this.get_node(obj.parent); + pos = $.inArray(obj.id, par.children); + c = false; + if(!this.check("delete_node", obj, par, pos)) { + this.settings.core.error.call(this, this._data.core.last_error); + return false; + } + if(pos !== -1) { + par.children = $.vakata.array_remove(par.children, pos); + } + tmp = obj.children_d.concat([]); + tmp.push(obj.id); + for(i = 0, j = obj.parents.length; i < j; i++) { + this._model.data[obj.parents[i]].children_d = $.vakata.array_filter(this._model.data[obj.parents[i]].children_d, function (v) { + return $.inArray(v, tmp) === -1; + }); + } + for(k = 0, l = tmp.length; k < l; k++) { + if(this._model.data[tmp[k]].state.selected) { + c = true; + break; + } + } + if (c) { + this._data.core.selected = $.vakata.array_filter(this._data.core.selected, function (v) { + return $.inArray(v, tmp) === -1; + }); + } + /** + * triggered when a node is deleted + * @event + * @name delete_node.jstree + * @param {Object} node + * @param {String} parent the parent's ID + */ + this.trigger('delete_node', { "node" : obj, "parent" : par.id }); + if(c) { + this.trigger('changed', { 'action' : 'delete_node', 'node' : obj, 'selected' : this._data.core.selected, 'parent' : par.id }); + } + for(k = 0, l = tmp.length; k < l; k++) { + delete this._model.data[tmp[k]]; + } + if($.inArray(this._data.core.focused, tmp) !== -1) { + this._data.core.focused = null; + top = this.element[0].scrollTop; + lft = this.element[0].scrollLeft; + if(par.id === $.jstree.root) { + if (this._model.data[$.jstree.root].children[0]) { + this.get_node(this._model.data[$.jstree.root].children[0], true).children('.jstree-anchor').focus(); + } + } + else { + this.get_node(par, true).children('.jstree-anchor').focus(); + } + this.element[0].scrollTop = top; + this.element[0].scrollLeft = lft; + } + this.redraw_node(par, true); + return true; + }, + /** + * check if an operation is premitted on the tree. Used internally. + * @private + * @name check(chk, obj, par, pos) + * @param {String} chk the operation to check, can be "create_node", "rename_node", "delete_node", "copy_node" or "move_node" + * @param {mixed} obj the node + * @param {mixed} par the parent + * @param {mixed} pos the position to insert at, or if "rename_node" - the new name + * @param {mixed} more some various additional information, for example if a "move_node" operations is triggered by DND this will be the hovered node + * @return {Boolean} + */ + check : function (chk, obj, par, pos, more) { + obj = obj && obj.id ? obj : this.get_node(obj); + par = par && par.id ? par : this.get_node(par); + var tmp = chk.match(/^move_node|copy_node|create_node$/i) ? par : obj, + chc = this.settings.core.check_callback; + if(chk === "move_node" || chk === "copy_node") { + if((!more || !more.is_multi) && (obj.id === par.id || (chk === "move_node" && $.inArray(obj.id, par.children) === pos) || $.inArray(par.id, obj.children_d) !== -1)) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_01', 'reason' : 'Moving parent inside child', 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + return false; + } + } + if(tmp && tmp.data) { tmp = tmp.data; } + if(tmp && tmp.functions && (tmp.functions[chk] === false || tmp.functions[chk] === true)) { + if(tmp.functions[chk] === false) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_02', 'reason' : 'Node data prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + } + return tmp.functions[chk]; + } + if(chc === false || ($.isFunction(chc) && chc.call(this, chk, obj, par, pos, more) === false) || (chc && chc[chk] === false)) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_03', 'reason' : 'User config for core.check_callback prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + return false; + } + return true; + }, + /** + * get the last error + * @name last_error() + * @return {Object} + */ + last_error : function () { + return this._data.core.last_error; + }, + /** + * move a node to a new parent + * @name move_node(obj, par [, pos, callback, is_loaded]) + * @param {mixed} obj the node to move, pass an array to move multiple nodes + * @param {mixed} par the new parent + * @param {mixed} pos the position to insert at (besides integer values, "first" and "last" are supported, as well as "before" and "after"), defaults to integer `0` + * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position + * @param {Boolean} is_loaded internal parameter indicating if the parent node has been loaded + * @param {Boolean} skip_redraw internal parameter indicating if the tree should be redrawn + * @param {Boolean} instance internal parameter indicating if the node comes from another instance + * @trigger move_node.jstree + */ + move_node : function (obj, par, pos, callback, is_loaded, skip_redraw, origin) { + var t1, t2, old_par, old_pos, new_par, old_ins, is_multi, dpc, tmp, i, j, k, l, p; + + par = this.get_node(par); + pos = pos === undefined ? 0 : pos; + if(!par) { return false; } + if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { + return this.load_node(par, function () { this.move_node(obj, par, pos, callback, true, false, origin); }); + } + + if($.isArray(obj)) { + if(obj.length === 1) { + obj = obj[0]; + } + else { + //obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + if((tmp = this.move_node(obj[t1], par, pos, callback, is_loaded, false, origin))) { + par = tmp; + pos = "after"; + } + } + this.redraw(); + return true; + } + } + obj = obj && obj.id ? obj : this.get_node(obj); + + if(!obj || obj.id === $.jstree.root) { return false; } + + old_par = (obj.parent || $.jstree.root).toString(); + new_par = (!pos.toString().match(/^(before|after)$/) || par.id === $.jstree.root) ? par : this.get_node(par.parent); + old_ins = origin ? origin : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id)); + is_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id); + old_pos = old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1; + if(old_ins && old_ins._id) { + obj = old_ins._model.data[obj.id]; + } + + if(is_multi) { + if((tmp = this.copy_node(obj, par, pos, callback, is_loaded, false, origin))) { + if(old_ins) { old_ins.delete_node(obj); } + return tmp; + } + return false; + } + //var m = this._model.data; + if(par.id === $.jstree.root) { + if(pos === "before") { pos = "first"; } + if(pos === "after") { pos = "last"; } + } + switch(pos) { + case "before": + pos = $.inArray(par.id, new_par.children); + break; + case "after" : + pos = $.inArray(par.id, new_par.children) + 1; + break; + case "inside": + case "first": + pos = 0; + break; + case "last": + pos = new_par.children.length; + break; + default: + if(!pos) { pos = 0; } + break; + } + if(pos > new_par.children.length) { pos = new_par.children.length; } + if(!this.check("move_node", obj, new_par, pos, { 'core' : true, 'origin' : origin, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) { + this.settings.core.error.call(this, this._data.core.last_error); + return false; + } + if(obj.parent === new_par.id) { + dpc = new_par.children.concat(); + tmp = $.inArray(obj.id, dpc); + if(tmp !== -1) { + dpc = $.vakata.array_remove(dpc, tmp); + if(pos > tmp) { pos--; } + } + tmp = []; + for(i = 0, j = dpc.length; i < j; i++) { + tmp[i >= pos ? i+1 : i] = dpc[i]; + } + tmp[pos] = obj.id; + new_par.children = tmp; + this._node_changed(new_par.id); + this.redraw(new_par.id === $.jstree.root); + } + else { + // clean old parent and up + tmp = obj.children_d.concat(); + tmp.push(obj.id); + for(i = 0, j = obj.parents.length; i < j; i++) { + dpc = []; + p = old_ins._model.data[obj.parents[i]].children_d; + for(k = 0, l = p.length; k < l; k++) { + if($.inArray(p[k], tmp) === -1) { + dpc.push(p[k]); + } + } + old_ins._model.data[obj.parents[i]].children_d = dpc; + } + old_ins._model.data[old_par].children = $.vakata.array_remove_item(old_ins._model.data[old_par].children, obj.id); + + // insert into new parent and up + for(i = 0, j = new_par.parents.length; i < j; i++) { + this._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(tmp); + } + dpc = []; + for(i = 0, j = new_par.children.length; i < j; i++) { + dpc[i >= pos ? i+1 : i] = new_par.children[i]; + } + dpc[pos] = obj.id; + new_par.children = dpc; + new_par.children_d.push(obj.id); + new_par.children_d = new_par.children_d.concat(obj.children_d); + + // update object + obj.parent = new_par.id; + tmp = new_par.parents.concat(); + tmp.unshift(new_par.id); + p = obj.parents.length; + obj.parents = tmp; + + // update object children + tmp = tmp.concat(); + for(i = 0, j = obj.children_d.length; i < j; i++) { + this._model.data[obj.children_d[i]].parents = this._model.data[obj.children_d[i]].parents.slice(0,p*-1); + Array.prototype.push.apply(this._model.data[obj.children_d[i]].parents, tmp); + } + + if(old_par === $.jstree.root || new_par.id === $.jstree.root) { + this._model.force_full_redraw = true; + } + if(!this._model.force_full_redraw) { + this._node_changed(old_par); + this._node_changed(new_par.id); + } + if(!skip_redraw) { + this.redraw(); + } + } + if(callback) { callback.call(this, obj, new_par, pos); } + /** + * triggered when a node is moved + * @event + * @name move_node.jstree + * @param {Object} node + * @param {String} parent the parent's ID + * @param {Number} position the position of the node among the parent's children + * @param {String} old_parent the old parent of the node + * @param {Number} old_position the old position of the node + * @param {Boolean} is_multi do the node and new parent belong to different instances + * @param {jsTree} old_instance the instance the node came from + * @param {jsTree} new_instance the instance of the new parent + */ + this.trigger('move_node', { "node" : obj, "parent" : new_par.id, "position" : pos, "old_parent" : old_par, "old_position" : old_pos, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this }); + return obj.id; + }, + /** + * copy a node to a new parent + * @name copy_node(obj, par [, pos, callback, is_loaded]) + * @param {mixed} obj the node to copy, pass an array to copy multiple nodes + * @param {mixed} par the new parent + * @param {mixed} pos the position to insert at (besides integer values, "first" and "last" are supported, as well as "before" and "after"), defaults to integer `0` + * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position + * @param {Boolean} is_loaded internal parameter indicating if the parent node has been loaded + * @param {Boolean} skip_redraw internal parameter indicating if the tree should be redrawn + * @param {Boolean} instance internal parameter indicating if the node comes from another instance + * @trigger model.jstree copy_node.jstree + */ + copy_node : function (obj, par, pos, callback, is_loaded, skip_redraw, origin) { + var t1, t2, dpc, tmp, i, j, node, old_par, new_par, old_ins, is_multi; + + par = this.get_node(par); + pos = pos === undefined ? 0 : pos; + if(!par) { return false; } + if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { + return this.load_node(par, function () { this.copy_node(obj, par, pos, callback, true, false, origin); }); + } + + if($.isArray(obj)) { + if(obj.length === 1) { + obj = obj[0]; + } + else { + //obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + if((tmp = this.copy_node(obj[t1], par, pos, callback, is_loaded, true, origin))) { + par = tmp; + pos = "after"; + } + } + this.redraw(); + return true; + } + } + obj = obj && obj.id ? obj : this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + + old_par = (obj.parent || $.jstree.root).toString(); + new_par = (!pos.toString().match(/^(before|after)$/) || par.id === $.jstree.root) ? par : this.get_node(par.parent); + old_ins = origin ? origin : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id)); + is_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id); + + if(old_ins && old_ins._id) { + obj = old_ins._model.data[obj.id]; + } + + if(par.id === $.jstree.root) { + if(pos === "before") { pos = "first"; } + if(pos === "after") { pos = "last"; } + } + switch(pos) { + case "before": + pos = $.inArray(par.id, new_par.children); + break; + case "after" : + pos = $.inArray(par.id, new_par.children) + 1; + break; + case "inside": + case "first": + pos = 0; + break; + case "last": + pos = new_par.children.length; + break; + default: + if(!pos) { pos = 0; } + break; + } + if(pos > new_par.children.length) { pos = new_par.children.length; } + if(!this.check("copy_node", obj, new_par, pos, { 'core' : true, 'origin' : origin, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) { + this.settings.core.error.call(this, this._data.core.last_error); + return false; + } + node = old_ins ? old_ins.get_json(obj, { no_id : true, no_data : true, no_state : true }) : obj; + if(!node) { return false; } + if(node.id === true) { delete node.id; } + node = this._parse_model_from_json(node, new_par.id, new_par.parents.concat()); + if(!node) { return false; } + tmp = this.get_node(node); + if(obj && obj.state && obj.state.loaded === false) { tmp.state.loaded = false; } + dpc = []; + dpc.push(node); + dpc = dpc.concat(tmp.children_d); + this.trigger('model', { "nodes" : dpc, "parent" : new_par.id }); + + // insert into new parent and up + for(i = 0, j = new_par.parents.length; i < j; i++) { + this._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(dpc); + } + dpc = []; + for(i = 0, j = new_par.children.length; i < j; i++) { + dpc[i >= pos ? i+1 : i] = new_par.children[i]; + } + dpc[pos] = tmp.id; + new_par.children = dpc; + new_par.children_d.push(tmp.id); + new_par.children_d = new_par.children_d.concat(tmp.children_d); + + if(new_par.id === $.jstree.root) { + this._model.force_full_redraw = true; + } + if(!this._model.force_full_redraw) { + this._node_changed(new_par.id); + } + if(!skip_redraw) { + this.redraw(new_par.id === $.jstree.root); + } + if(callback) { callback.call(this, tmp, new_par, pos); } + /** + * triggered when a node is copied + * @event + * @name copy_node.jstree + * @param {Object} node the copied node + * @param {Object} original the original node + * @param {String} parent the parent's ID + * @param {Number} position the position of the node among the parent's children + * @param {String} old_parent the old parent of the node + * @param {Number} old_position the position of the original node + * @param {Boolean} is_multi do the node and new parent belong to different instances + * @param {jsTree} old_instance the instance the node came from + * @param {jsTree} new_instance the instance of the new parent + */ + this.trigger('copy_node', { "node" : tmp, "original" : obj, "parent" : new_par.id, "position" : pos, "old_parent" : old_par, "old_position" : old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1,'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this }); + return tmp.id; + }, + /** + * cut a node (a later call to `paste(obj)` would move the node) + * @name cut(obj) + * @param {mixed} obj multiple objects can be passed using an array + * @trigger cut.jstree + */ + cut : function (obj) { + if(!obj) { obj = this._data.core.selected.concat(); } + if(!$.isArray(obj)) { obj = [obj]; } + if(!obj.length) { return false; } + var tmp = [], o, t1, t2; + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + o = this.get_node(obj[t1]); + if(o && o.id && o.id !== $.jstree.root) { tmp.push(o); } + } + if(!tmp.length) { return false; } + ccp_node = tmp; + ccp_inst = this; + ccp_mode = 'move_node'; + /** + * triggered when nodes are added to the buffer for moving + * @event + * @name cut.jstree + * @param {Array} node + */ + this.trigger('cut', { "node" : obj }); + }, + /** + * copy a node (a later call to `paste(obj)` would copy the node) + * @name copy(obj) + * @param {mixed} obj multiple objects can be passed using an array + * @trigger copy.jstree + */ + copy : function (obj) { + if(!obj) { obj = this._data.core.selected.concat(); } + if(!$.isArray(obj)) { obj = [obj]; } + if(!obj.length) { return false; } + var tmp = [], o, t1, t2; + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + o = this.get_node(obj[t1]); + if(o && o.id && o.id !== $.jstree.root) { tmp.push(o); } + } + if(!tmp.length) { return false; } + ccp_node = tmp; + ccp_inst = this; + ccp_mode = 'copy_node'; + /** + * triggered when nodes are added to the buffer for copying + * @event + * @name copy.jstree + * @param {Array} node + */ + this.trigger('copy', { "node" : obj }); + }, + /** + * get the current buffer (any nodes that are waiting for a paste operation) + * @name get_buffer() + * @return {Object} an object consisting of `mode` ("copy_node" or "move_node"), `node` (an array of objects) and `inst` (the instance) + */ + get_buffer : function () { + return { 'mode' : ccp_mode, 'node' : ccp_node, 'inst' : ccp_inst }; + }, + /** + * check if there is something in the buffer to paste + * @name can_paste() + * @return {Boolean} + */ + can_paste : function () { + return ccp_mode !== false && ccp_node !== false; // && ccp_inst._model.data[ccp_node]; + }, + /** + * copy or move the previously cut or copied nodes to a new parent + * @name paste(obj [, pos]) + * @param {mixed} obj the new parent + * @param {mixed} pos the position to insert at (besides integer, "first" and "last" are supported), defaults to integer `0` + * @trigger paste.jstree + */ + paste : function (obj, pos) { + obj = this.get_node(obj); + if(!obj || !ccp_mode || !ccp_mode.match(/^(copy_node|move_node)$/) || !ccp_node) { return false; } + if(this[ccp_mode](ccp_node, obj, pos, false, false, false, ccp_inst)) { + /** + * triggered when paste is invoked + * @event + * @name paste.jstree + * @param {String} parent the ID of the receiving node + * @param {Array} node the nodes in the buffer + * @param {String} mode the performed operation - "copy_node" or "move_node" + */ + this.trigger('paste', { "parent" : obj.id, "node" : ccp_node, "mode" : ccp_mode }); + } + ccp_node = false; + ccp_mode = false; + ccp_inst = false; + }, + /** + * clear the buffer of previously copied or cut nodes + * @name clear_buffer() + * @trigger clear_buffer.jstree + */ + clear_buffer : function () { + ccp_node = false; + ccp_mode = false; + ccp_inst = false; + /** + * triggered when the copy / cut buffer is cleared + * @event + * @name clear_buffer.jstree + */ + this.trigger('clear_buffer'); + }, + /** + * put a node in edit mode (input field to rename the node) + * @name edit(obj [, default_text, callback]) + * @param {mixed} obj + * @param {String} default_text the text to populate the input with (if omitted or set to a non-string value the node's text value is used) + * @param {Function} callback a function to be called once the text box is blurred, it is called in the instance's scope and receives the node, a status parameter (true if the rename is successful, false otherwise) and a boolean indicating if the user cancelled the edit. You can access the node's title using .text + */ + edit : function (obj, default_text, callback) { + var rtl, w, a, s, t, h1, h2, fn, tmp, cancel = false; + obj = this.get_node(obj); + if(!obj) { return false; } + if(this.settings.core.check_callback === false) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_07', 'reason' : 'Could not edit node because of check_callback' }; + this.settings.core.error.call(this, this._data.core.last_error); + return false; + } + tmp = obj; + default_text = typeof default_text === 'string' ? default_text : obj.text; + this.set_text(obj, ""); + obj = this._open_to(obj); + tmp.text = default_text; + + rtl = this._data.core.rtl; + w = this.element.width(); + this._data.core.focused = tmp.id; + a = obj.children('.jstree-anchor').focus(); + s = $(''); + /*! + oi = obj.children("i:visible"), + ai = a.children("i:visible"), + w1 = oi.width() * oi.length, + w2 = ai.width() * ai.length, + */ + t = default_text; + h1 = $("<"+"div />", { css : { "position" : "absolute", "top" : "-200px", "left" : (rtl ? "0px" : "-1000px"), "visibility" : "hidden" } }).appendTo("body"); + h2 = $("<"+"input />", { + "value" : t, + "class" : "jstree-rename-input", + // "size" : t.length, + "css" : { + "padding" : "0", + "border" : "1px solid silver", + "box-sizing" : "border-box", + "display" : "inline-block", + "height" : (this._data.core.li_height) + "px", + "lineHeight" : (this._data.core.li_height) + "px", + "width" : "150px" // will be set a bit further down + }, + "blur" : $.proxy(function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + var i = s.children(".jstree-rename-input"), + v = i.val(), + f = this.settings.core.force_text, + nv; + if(v === "") { v = t; } + h1.remove(); + s.replaceWith(a); + s.remove(); + t = f ? t : $('
').append($.parseHTML(t)).html(); + this.set_text(obj, t); + nv = !!this.rename_node(obj, f ? $('
').text(v).text() : $('
').append($.parseHTML(v)).html()); + if(!nv) { + this.set_text(obj, t); // move this up? and fix #483 + } + this._data.core.focused = tmp.id; + setTimeout($.proxy(function () { + var node = this.get_node(tmp.id, true); + if(node.length) { + this._data.core.focused = tmp.id; + node.children('.jstree-anchor').focus(); + } + }, this), 0); + if(callback) { + callback.call(this, tmp, nv, cancel); + } + h2 = null; + }, this), + "keydown" : function (e) { + var key = e.which; + if(key === 27) { + cancel = true; + this.value = t; + } + if(key === 27 || key === 13 || key === 37 || key === 38 || key === 39 || key === 40 || key === 32) { + e.stopImmediatePropagation(); + } + if(key === 27 || key === 13) { + e.preventDefault(); + this.blur(); + } + }, + "click" : function (e) { e.stopImmediatePropagation(); }, + "mousedown" : function (e) { e.stopImmediatePropagation(); }, + "keyup" : function (e) { + h2.width(Math.min(h1.text("pW" + this.value).width(),w)); + }, + "keypress" : function(e) { + if(e.which === 13) { return false; } + } + }); + fn = { + fontFamily : a.css('fontFamily') || '', + fontSize : a.css('fontSize') || '', + fontWeight : a.css('fontWeight') || '', + fontStyle : a.css('fontStyle') || '', + fontStretch : a.css('fontStretch') || '', + fontVariant : a.css('fontVariant') || '', + letterSpacing : a.css('letterSpacing') || '', + wordSpacing : a.css('wordSpacing') || '' + }; + s.attr('class', a.attr('class')).append(a.contents().clone()).append(h2); + a.replaceWith(s); + h1.css(fn); + h2.css(fn).width(Math.min(h1.text("pW" + h2[0].value).width(),w))[0].select(); + $(document).one('mousedown.jstree touchstart.jstree dnd_start.vakata', function (e) { + if (h2 && e.target !== h2) { + $(h2).blur(); + } + }); + }, + + + /** + * changes the theme + * @name set_theme(theme_name [, theme_url]) + * @param {String} theme_name the name of the new theme to apply + * @param {mixed} theme_url the location of the CSS file for this theme. Omit or set to `false` if you manually included the file. Set to `true` to autoload from the `core.themes.dir` directory. + * @trigger set_theme.jstree + */ + set_theme : function (theme_name, theme_url) { + if(!theme_name) { return false; } + if(theme_url === true) { + var dir = this.settings.core.themes.dir; + if(!dir) { dir = $.jstree.path + '/themes'; } + theme_url = dir + '/' + theme_name + '/style.css'; + } + if(theme_url && $.inArray(theme_url, themes_loaded) === -1) { + $('head').append('<'+'link rel="stylesheet" href="' + theme_url + '" type="text/css" />'); + themes_loaded.push(theme_url); + } + if(this._data.core.themes.name) { + this.element.removeClass('jstree-' + this._data.core.themes.name); + } + this._data.core.themes.name = theme_name; + this.element.addClass('jstree-' + theme_name); + this.element[this.settings.core.themes.responsive ? 'addClass' : 'removeClass' ]('jstree-' + theme_name + '-responsive'); + /** + * triggered when a theme is set + * @event + * @name set_theme.jstree + * @param {String} theme the new theme + */ + this.trigger('set_theme', { 'theme' : theme_name }); + }, + /** + * gets the name of the currently applied theme name + * @name get_theme() + * @return {String} + */ + get_theme : function () { return this._data.core.themes.name; }, + /** + * changes the theme variant (if the theme has variants) + * @name set_theme_variant(variant_name) + * @param {String|Boolean} variant_name the variant to apply (if `false` is used the current variant is removed) + */ + set_theme_variant : function (variant_name) { + if(this._data.core.themes.variant) { + this.element.removeClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant); + } + this._data.core.themes.variant = variant_name; + if(variant_name) { + this.element.addClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant); + } + }, + /** + * gets the name of the currently applied theme variant + * @name get_theme() + * @return {String} + */ + get_theme_variant : function () { return this._data.core.themes.variant; }, + /** + * shows a striped background on the container (if the theme supports it) + * @name show_stripes() + */ + show_stripes : function () { + this._data.core.themes.stripes = true; + this.get_container_ul().addClass("jstree-striped"); + /** + * triggered when stripes are shown + * @event + * @name show_stripes.jstree + */ + this.trigger('show_stripes'); + }, + /** + * hides the striped background on the container + * @name hide_stripes() + */ + hide_stripes : function () { + this._data.core.themes.stripes = false; + this.get_container_ul().removeClass("jstree-striped"); + /** + * triggered when stripes are hidden + * @event + * @name hide_stripes.jstree + */ + this.trigger('hide_stripes'); + }, + /** + * toggles the striped background on the container + * @name toggle_stripes() + */ + toggle_stripes : function () { if(this._data.core.themes.stripes) { this.hide_stripes(); } else { this.show_stripes(); } }, + /** + * shows the connecting dots (if the theme supports it) + * @name show_dots() + */ + show_dots : function () { + this._data.core.themes.dots = true; + this.get_container_ul().removeClass("jstree-no-dots"); + /** + * triggered when dots are shown + * @event + * @name show_dots.jstree + */ + this.trigger('show_dots'); + }, + /** + * hides the connecting dots + * @name hide_dots() + */ + hide_dots : function () { + this._data.core.themes.dots = false; + this.get_container_ul().addClass("jstree-no-dots"); + /** + * triggered when dots are hidden + * @event + * @name hide_dots.jstree + */ + this.trigger('hide_dots'); + }, + /** + * toggles the connecting dots + * @name toggle_dots() + */ + toggle_dots : function () { if(this._data.core.themes.dots) { this.hide_dots(); } else { this.show_dots(); } }, + /** + * show the node icons + * @name show_icons() + */ + show_icons : function () { + this._data.core.themes.icons = true; + this.get_container_ul().removeClass("jstree-no-icons"); + /** + * triggered when icons are shown + * @event + * @name show_icons.jstree + */ + this.trigger('show_icons'); + }, + /** + * hide the node icons + * @name hide_icons() + */ + hide_icons : function () { + this._data.core.themes.icons = false; + this.get_container_ul().addClass("jstree-no-icons"); + /** + * triggered when icons are hidden + * @event + * @name hide_icons.jstree + */ + this.trigger('hide_icons'); + }, + /** + * toggle the node icons + * @name toggle_icons() + */ + toggle_icons : function () { if(this._data.core.themes.icons) { this.hide_icons(); } else { this.show_icons(); } }, + /** + * show the node ellipsis + * @name show_icons() + */ + show_ellipsis : function () { + this._data.core.themes.ellipsis = true; + this.get_container_ul().addClass("jstree-ellipsis"); + /** + * triggered when ellisis is shown + * @event + * @name show_ellipsis.jstree + */ + this.trigger('show_ellipsis'); + }, + /** + * hide the node ellipsis + * @name hide_ellipsis() + */ + hide_ellipsis : function () { + this._data.core.themes.ellipsis = false; + this.get_container_ul().removeClass("jstree-ellipsis"); + /** + * triggered when ellisis is hidden + * @event + * @name hide_ellipsis.jstree + */ + this.trigger('hide_ellipsis'); + }, + /** + * toggle the node ellipsis + * @name toggle_icons() + */ + toggle_ellipsis : function () { if(this._data.core.themes.ellipsis) { this.hide_ellipsis(); } else { this.show_ellipsis(); } }, + /** + * set the node icon for a node + * @name set_icon(obj, icon) + * @param {mixed} obj + * @param {String} icon the new icon - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class + */ + set_icon : function (obj, icon) { + var t1, t2, dom, old; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.set_icon(obj[t1], icon); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + old = obj.icon; + obj.icon = icon === true || icon === null || icon === undefined || icon === '' ? true : icon; + dom = this.get_node(obj, true).children(".jstree-anchor").children(".jstree-themeicon"); + if(icon === false) { + this.hide_icon(obj); + } + else if(icon === true || icon === null || icon === undefined || icon === '') { + dom.removeClass('jstree-themeicon-custom ' + old).css("background","").removeAttr("rel"); + if(old === false) { this.show_icon(obj); } + } + else if(icon.indexOf("/") === -1 && icon.indexOf(".") === -1) { + dom.removeClass(old).css("background",""); + dom.addClass(icon + ' jstree-themeicon-custom').attr("rel",icon); + if(old === false) { this.show_icon(obj); } + } + else { + dom.removeClass(old).css("background",""); + dom.addClass('jstree-themeicon-custom').css("background", "url('" + icon + "') center center no-repeat").attr("rel",icon); + if(old === false) { this.show_icon(obj); } + } + return true; + }, + /** + * get the node icon for a node + * @name get_icon(obj) + * @param {mixed} obj + * @return {String} + */ + get_icon : function (obj) { + obj = this.get_node(obj); + return (!obj || obj.id === $.jstree.root) ? false : obj.icon; + }, + /** + * hide the icon on an individual node + * @name hide_icon(obj) + * @param {mixed} obj + */ + hide_icon : function (obj) { + var t1, t2; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.hide_icon(obj[t1]); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj === $.jstree.root) { return false; } + obj.icon = false; + this.get_node(obj, true).children(".jstree-anchor").children(".jstree-themeicon").addClass('jstree-themeicon-hidden'); + return true; + }, + /** + * show the icon on an individual node + * @name show_icon(obj) + * @param {mixed} obj + */ + show_icon : function (obj) { + var t1, t2, dom; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.show_icon(obj[t1]); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj === $.jstree.root) { return false; } + dom = this.get_node(obj, true); + obj.icon = dom.length ? dom.children(".jstree-anchor").children(".jstree-themeicon").attr('rel') : true; + if(!obj.icon) { obj.icon = true; } + dom.children(".jstree-anchor").children(".jstree-themeicon").removeClass('jstree-themeicon-hidden'); + return true; + } + }; + + // helpers + $.vakata = {}; + // collect attributes + $.vakata.attributes = function(node, with_values) { + node = $(node)[0]; + var attr = with_values ? {} : []; + if(node && node.attributes) { + $.each(node.attributes, function (i, v) { + if($.inArray(v.name.toLowerCase(),['style','contenteditable','hasfocus','tabindex']) !== -1) { return; } + if(v.value !== null && $.trim(v.value) !== '') { + if(with_values) { attr[v.name] = v.value; } + else { attr.push(v.name); } + } + }); + } + return attr; + }; + $.vakata.array_unique = function(array) { + var a = [], i, j, l, o = {}; + for(i = 0, l = array.length; i < l; i++) { + if(o[array[i]] === undefined) { + a.push(array[i]); + o[array[i]] = true; + } + } + return a; + }; + // remove item from array + $.vakata.array_remove = function(array, from) { + array.splice(from, 1); + return array; + //var rest = array.slice((to || from) + 1 || array.length); + //array.length = from < 0 ? array.length + from : from; + //array.push.apply(array, rest); + //return array; + }; + // remove item from array + $.vakata.array_remove_item = function(array, item) { + var tmp = $.inArray(item, array); + return tmp !== -1 ? $.vakata.array_remove(array, tmp) : array; + }; + $.vakata.array_filter = function(c,a,b,d,e) { + if (c.filter) { + return c.filter(a, b); + } + d=[]; + for (e in c) { + if (~~e+''===e+'' && e>=0 && a.call(b,c[e],+e,c)) { + d.push(c[e]); + } + } + return d; + }; + + +/** + * ### Changed plugin + * + * This plugin adds more information to the `changed.jstree` event. The new data is contained in the `changed` event data property, and contains a lists of `selected` and `deselected` nodes. + */ + + $.jstree.plugins.changed = function (options, parent) { + var last = []; + this.trigger = function (ev, data) { + var i, j; + if(!data) { + data = {}; + } + if(ev.replace('.jstree','') === 'changed') { + data.changed = { selected : [], deselected : [] }; + var tmp = {}; + for(i = 0, j = last.length; i < j; i++) { + tmp[last[i]] = 1; + } + for(i = 0, j = data.selected.length; i < j; i++) { + if(!tmp[data.selected[i]]) { + data.changed.selected.push(data.selected[i]); + } + else { + tmp[data.selected[i]] = 2; + } + } + for(i = 0, j = last.length; i < j; i++) { + if(tmp[last[i]] === 1) { + data.changed.deselected.push(last[i]); + } + } + last = data.selected.slice(); + } + /** + * triggered when selection changes (the "changed" plugin enhances the original event with more data) + * @event + * @name changed.jstree + * @param {Object} node + * @param {Object} action the action that caused the selection to change + * @param {Array} selected the current selection + * @param {Object} changed an object containing two properties `selected` and `deselected` - both arrays of node IDs, which were selected or deselected since the last changed event + * @param {Object} event the event (if any) that triggered this changed event + * @plugin changed + */ + parent.trigger.call(this, ev, data); + }; + this.refresh = function (skip_loading, forget_state) { + last = []; + return parent.refresh.apply(this, arguments); + }; + }; + +/** + * ### Checkbox plugin + * + * This plugin renders checkbox icons in front of each node, making multiple selection much easier. + * It also supports tri-state behavior, meaning that if a node has a few of its children checked it will be rendered as undetermined, and state will be propagated up. + */ + + var _i = document.createElement('I'); + _i.className = 'jstree-icon jstree-checkbox'; + _i.setAttribute('role', 'presentation'); + /** + * stores all defaults for the checkbox plugin + * @name $.jstree.defaults.checkbox + * @plugin checkbox + */ + $.jstree.defaults.checkbox = { + /** + * a boolean indicating if checkboxes should be visible (can be changed at a later time using `show_checkboxes()` and `hide_checkboxes`). Defaults to `true`. + * @name $.jstree.defaults.checkbox.visible + * @plugin checkbox + */ + visible : true, + /** + * a boolean indicating if checkboxes should cascade down and have an undetermined state. Defaults to `true`. + * @name $.jstree.defaults.checkbox.three_state + * @plugin checkbox + */ + three_state : true, + /** + * a boolean indicating if clicking anywhere on the node should act as clicking on the checkbox. Defaults to `true`. + * @name $.jstree.defaults.checkbox.whole_node + * @plugin checkbox + */ + whole_node : true, + /** + * a boolean indicating if the selected style of a node should be kept, or removed. Defaults to `true`. + * @name $.jstree.defaults.checkbox.keep_selected_style + * @plugin checkbox + */ + keep_selected_style : true, + /** + * This setting controls how cascading and undetermined nodes are applied. + * If 'up' is in the string - cascading up is enabled, if 'down' is in the string - cascading down is enabled, if 'undetermined' is in the string - undetermined nodes will be used. + * If `three_state` is set to `true` this setting is automatically set to 'up+down+undetermined'. Defaults to ''. + * @name $.jstree.defaults.checkbox.cascade + * @plugin checkbox + */ + cascade : '', + /** + * This setting controls if checkbox are bound to the general tree selection or to an internal array maintained by the checkbox plugin. Defaults to `true`, only set to `false` if you know exactly what you are doing. + * @name $.jstree.defaults.checkbox.tie_selection + * @plugin checkbox + */ + tie_selection : true + }; + $.jstree.plugins.checkbox = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + this._data.checkbox.uto = false; + this._data.checkbox.selected = []; + if(this.settings.checkbox.three_state) { + this.settings.checkbox.cascade = 'up+down+undetermined'; + } + this.element + .on("init.jstree", $.proxy(function () { + this._data.checkbox.visible = this.settings.checkbox.visible; + if(!this.settings.checkbox.keep_selected_style) { + this.element.addClass('jstree-checkbox-no-clicked'); + } + if(this.settings.checkbox.tie_selection) { + this.element.addClass('jstree-checkbox-selection'); + } + }, this)) + .on("loading.jstree", $.proxy(function () { + this[ this._data.checkbox.visible ? 'show_checkboxes' : 'hide_checkboxes' ](); + }, this)); + if(this.settings.checkbox.cascade.indexOf('undetermined') !== -1) { + this.element + .on('changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree', $.proxy(function () { + // only if undetermined is in setting + if(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); } + this._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50); + }, this)); + } + if(!this.settings.checkbox.tie_selection) { + this.element + .on('model.jstree', $.proxy(function (e, data) { + var m = this._model.data, + p = m[data.parent], + dpc = data.nodes, + i, j; + for(i = 0, j = dpc.length; i < j; i++) { + m[dpc[i]].state.checked = m[dpc[i]].state.checked || (m[dpc[i]].original && m[dpc[i]].original.state && m[dpc[i]].original.state.checked); + if(m[dpc[i]].state.checked) { + this._data.checkbox.selected.push(dpc[i]); + } + } + }, this)); + } + if(this.settings.checkbox.cascade.indexOf('up') !== -1 || this.settings.checkbox.cascade.indexOf('down') !== -1) { + this.element + .on('model.jstree', $.proxy(function (e, data) { + var m = this._model.data, + p = m[data.parent], + dpc = data.nodes, + chd = [], + c, i, j, k, l, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection; + + if(s.indexOf('down') !== -1) { + // apply down + if(p.state[ t ? 'selected' : 'checked' ]) { + for(i = 0, j = dpc.length; i < j; i++) { + m[dpc[i]].state[ t ? 'selected' : 'checked' ] = true; + } + this._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(dpc); + } + else { + for(i = 0, j = dpc.length; i < j; i++) { + if(m[dpc[i]].state[ t ? 'selected' : 'checked' ]) { + for(k = 0, l = m[dpc[i]].children_d.length; k < l; k++) { + m[m[dpc[i]].children_d[k]].state[ t ? 'selected' : 'checked' ] = true; + } + this._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(m[dpc[i]].children_d); + } + } + } + } + + if(s.indexOf('up') !== -1) { + // apply up + for(i = 0, j = p.children_d.length; i < j; i++) { + if(!m[p.children_d[i]].children.length) { + chd.push(m[p.children_d[i]].parent); + } + } + chd = $.vakata.array_unique(chd); + for(k = 0, l = chd.length; k < l; k++) { + p = m[chd[k]]; + while(p && p.id !== $.jstree.root) { + c = 0; + for(i = 0, j = p.children.length; i < j; i++) { + c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; + } + if(c === j) { + p.state[ t ? 'selected' : 'checked' ] = true; + this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); + tmp = this.get_node(p, true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', true).children('.jstree-anchor').addClass( t ? 'jstree-clicked' : 'jstree-checked'); + } + } + else { + break; + } + p = this.get_node(p.parent); + } + } + } + + this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected); + }, this)) + .on(this.settings.checkbox.tie_selection ? 'select_node.jstree' : 'check_node.jstree', $.proxy(function (e, data) { + var obj = data.node, + m = this._model.data, + par = this.get_node(obj.parent), + dom = this.get_node(obj, true), + i, j, c, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection, + sel = {}, cur = this._data[ t ? 'core' : 'checkbox' ].selected; + + for (i = 0, j = cur.length; i < j; i++) { + sel[cur[i]] = true; + } + // apply down + if(s.indexOf('down') !== -1) { + //this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected.concat(obj.children_d)); + for(i = 0, j = obj.children_d.length; i < j; i++) { + sel[obj.children_d[i]] = true; + tmp = m[obj.children_d[i]]; + tmp.state[ t ? 'selected' : 'checked' ] = true; + if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { + tmp.original.state.undetermined = false; + } + } + } + + // apply up + if(s.indexOf('up') !== -1) { + while(par && par.id !== $.jstree.root) { + c = 0; + for(i = 0, j = par.children.length; i < j; i++) { + c += m[par.children[i]].state[ t ? 'selected' : 'checked' ]; + } + if(c === j) { + par.state[ t ? 'selected' : 'checked' ] = true; + sel[par.id] = true; + //this._data[ t ? 'core' : 'checkbox' ].selected.push(par.id); + tmp = this.get_node(par, true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); + } + } + else { + break; + } + par = this.get_node(par.parent); + } + } + + cur = []; + for (i in sel) { + if (sel.hasOwnProperty(i)) { + cur.push(i); + } + } + this._data[ t ? 'core' : 'checkbox' ].selected = cur; + + // apply down (process .children separately?) + if(s.indexOf('down') !== -1 && dom.length) { + dom.find('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked').parent().attr('aria-selected', true); + } + }, this)) + .on(this.settings.checkbox.tie_selection ? 'deselect_all.jstree' : 'uncheck_all.jstree', $.proxy(function (e, data) { + var obj = this.get_node($.jstree.root), + m = this._model.data, + i, j, tmp; + for(i = 0, j = obj.children_d.length; i < j; i++) { + tmp = m[obj.children_d[i]]; + if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { + tmp.original.state.undetermined = false; + } + } + }, this)) + .on(this.settings.checkbox.tie_selection ? 'deselect_node.jstree' : 'uncheck_node.jstree', $.proxy(function (e, data) { + var obj = data.node, + dom = this.get_node(obj, true), + i, j, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection, + cur = this._data[ t ? 'core' : 'checkbox' ].selected, sel = {}; + if(obj && obj.original && obj.original.state && obj.original.state.undetermined) { + obj.original.state.undetermined = false; + } + + // apply down + if(s.indexOf('down') !== -1) { + for(i = 0, j = obj.children_d.length; i < j; i++) { + tmp = this._model.data[obj.children_d[i]]; + tmp.state[ t ? 'selected' : 'checked' ] = false; + if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { + tmp.original.state.undetermined = false; + } + } + } + + // apply up + if(s.indexOf('up') !== -1) { + for(i = 0, j = obj.parents.length; i < j; i++) { + tmp = this._model.data[obj.parents[i]]; + tmp.state[ t ? 'selected' : 'checked' ] = false; + if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { + tmp.original.state.undetermined = false; + } + tmp = this.get_node(obj.parents[i], true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); + } + } + } + sel = {}; + for(i = 0, j = cur.length; i < j; i++) { + // apply down + apply up + if( + (s.indexOf('down') === -1 || $.inArray(cur[i], obj.children_d) === -1) && + (s.indexOf('up') === -1 || $.inArray(cur[i], obj.parents) === -1) + ) { + sel[cur[i]] = true; + } + } + cur = []; + for (i in sel) { + if (sel.hasOwnProperty(i)) { + cur.push(i); + } + } + this._data[ t ? 'core' : 'checkbox' ].selected = cur; + + // apply down (process .children separately?) + if(s.indexOf('down') !== -1 && dom.length) { + dom.find('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked').parent().attr('aria-selected', false); + } + }, this)); + } + if(this.settings.checkbox.cascade.indexOf('up') !== -1) { + this.element + .on('delete_node.jstree', $.proxy(function (e, data) { + // apply up (whole handler) + var p = this.get_node(data.parent), + m = this._model.data, + i, j, c, tmp, t = this.settings.checkbox.tie_selection; + while(p && p.id !== $.jstree.root && !p.state[ t ? 'selected' : 'checked' ]) { + c = 0; + for(i = 0, j = p.children.length; i < j; i++) { + c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; + } + if(j > 0 && c === j) { + p.state[ t ? 'selected' : 'checked' ] = true; + this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); + tmp = this.get_node(p, true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); + } + } + else { + break; + } + p = this.get_node(p.parent); + } + }, this)) + .on('move_node.jstree', $.proxy(function (e, data) { + // apply up (whole handler) + var is_multi = data.is_multi, + old_par = data.old_parent, + new_par = this.get_node(data.parent), + m = this._model.data, + p, c, i, j, tmp, t = this.settings.checkbox.tie_selection; + if(!is_multi) { + p = this.get_node(old_par); + while(p && p.id !== $.jstree.root && !p.state[ t ? 'selected' : 'checked' ]) { + c = 0; + for(i = 0, j = p.children.length; i < j; i++) { + c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; + } + if(j > 0 && c === j) { + p.state[ t ? 'selected' : 'checked' ] = true; + this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); + tmp = this.get_node(p, true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); + } + } + else { + break; + } + p = this.get_node(p.parent); + } + } + p = new_par; + while(p && p.id !== $.jstree.root) { + c = 0; + for(i = 0, j = p.children.length; i < j; i++) { + c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; + } + if(c === j) { + if(!p.state[ t ? 'selected' : 'checked' ]) { + p.state[ t ? 'selected' : 'checked' ] = true; + this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); + tmp = this.get_node(p, true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); + } + } + } + else { + if(p.state[ t ? 'selected' : 'checked' ]) { + p.state[ t ? 'selected' : 'checked' ] = false; + this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_remove_item(this._data[ t ? 'core' : 'checkbox' ].selected, p.id); + tmp = this.get_node(p, true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); + } + } + else { + break; + } + } + p = this.get_node(p.parent); + } + }, this)); + } + }; + /** + * set the undetermined state where and if necessary. Used internally. + * @private + * @name _undetermined() + * @plugin checkbox + */ + this._undetermined = function () { + if(this.element === null) { return; } + var i, j, k, l, o = {}, m = this._model.data, t = this.settings.checkbox.tie_selection, s = this._data[ t ? 'core' : 'checkbox' ].selected, p = [], tt = this; + for(i = 0, j = s.length; i < j; i++) { + if(m[s[i]] && m[s[i]].parents) { + for(k = 0, l = m[s[i]].parents.length; k < l; k++) { + if(o[m[s[i]].parents[k]] !== undefined) { + break; + } + if(m[s[i]].parents[k] !== $.jstree.root) { + o[m[s[i]].parents[k]] = true; + p.push(m[s[i]].parents[k]); + } + } + } + } + // attempt for server side undetermined state + this.element.find('.jstree-closed').not(':has(.jstree-children)') + .each(function () { + var tmp = tt.get_node(this), tmp2; + if(!tmp.state.loaded) { + if(tmp.original && tmp.original.state && tmp.original.state.undetermined && tmp.original.state.undetermined === true) { + if(o[tmp.id] === undefined && tmp.id !== $.jstree.root) { + o[tmp.id] = true; + p.push(tmp.id); + } + for(k = 0, l = tmp.parents.length; k < l; k++) { + if(o[tmp.parents[k]] === undefined && tmp.parents[k] !== $.jstree.root) { + o[tmp.parents[k]] = true; + p.push(tmp.parents[k]); + } + } + } + } + else { + for(i = 0, j = tmp.children_d.length; i < j; i++) { + tmp2 = m[tmp.children_d[i]]; + if(!tmp2.state.loaded && tmp2.original && tmp2.original.state && tmp2.original.state.undetermined && tmp2.original.state.undetermined === true) { + if(o[tmp2.id] === undefined && tmp2.id !== $.jstree.root) { + o[tmp2.id] = true; + p.push(tmp2.id); + } + for(k = 0, l = tmp2.parents.length; k < l; k++) { + if(o[tmp2.parents[k]] === undefined && tmp2.parents[k] !== $.jstree.root) { + o[tmp2.parents[k]] = true; + p.push(tmp2.parents[k]); + } + } + } + } + } + }); + + this.element.find('.jstree-undetermined').removeClass('jstree-undetermined'); + for(i = 0, j = p.length; i < j; i++) { + if(!m[p[i]].state[ t ? 'selected' : 'checked' ]) { + s = this.get_node(p[i], true); + if(s && s.length) { + s.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-undetermined'); + } + } + } + }; + this.redraw_node = function(obj, deep, is_callback, force_render) { + obj = parent.redraw_node.apply(this, arguments); + if(obj) { + var i, j, tmp = null, icon = null; + for(i = 0, j = obj.childNodes.length; i < j; i++) { + if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { + tmp = obj.childNodes[i]; + break; + } + } + if(tmp) { + if(!this.settings.checkbox.tie_selection && this._model.data[obj.id].state.checked) { tmp.className += ' jstree-checked'; } + icon = _i.cloneNode(false); + if(this._model.data[obj.id].state.checkbox_disabled) { icon.className += ' jstree-checkbox-disabled'; } + tmp.insertBefore(icon, tmp.childNodes[0]); + } + } + if(!is_callback && this.settings.checkbox.cascade.indexOf('undetermined') !== -1) { + if(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); } + this._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50); + } + return obj; + }; + /** + * show the node checkbox icons + * @name show_checkboxes() + * @plugin checkbox + */ + this.show_checkboxes = function () { this._data.core.themes.checkboxes = true; this.get_container_ul().removeClass("jstree-no-checkboxes"); }; + /** + * hide the node checkbox icons + * @name hide_checkboxes() + * @plugin checkbox + */ + this.hide_checkboxes = function () { this._data.core.themes.checkboxes = false; this.get_container_ul().addClass("jstree-no-checkboxes"); }; + /** + * toggle the node icons + * @name toggle_checkboxes() + * @plugin checkbox + */ + this.toggle_checkboxes = function () { if(this._data.core.themes.checkboxes) { this.hide_checkboxes(); } else { this.show_checkboxes(); } }; + /** + * checks if a node is in an undetermined state + * @name is_undetermined(obj) + * @param {mixed} obj + * @return {Boolean} + */ + this.is_undetermined = function (obj) { + obj = this.get_node(obj); + var s = this.settings.checkbox.cascade, i, j, t = this.settings.checkbox.tie_selection, d = this._data[ t ? 'core' : 'checkbox' ].selected, m = this._model.data; + if(!obj || obj.state[ t ? 'selected' : 'checked' ] === true || s.indexOf('undetermined') === -1 || (s.indexOf('down') === -1 && s.indexOf('up') === -1)) { + return false; + } + if(!obj.state.loaded && obj.original.state.undetermined === true) { + return true; + } + for(i = 0, j = obj.children_d.length; i < j; i++) { + if($.inArray(obj.children_d[i], d) !== -1 || (!m[obj.children_d[i]].state.loaded && m[obj.children_d[i]].original.state.undetermined)) { + return true; + } + } + return false; + }; + /** + * disable a node's checkbox + * @name disable_checkbox(obj) + * @param {mixed} obj an array can be used too + * @trigger disable_checkbox.jstree + * @plugin checkbox + */ + this.disable_checkbox = function (obj) { + var t1, t2, dom; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.disable_checkbox(obj[t1]); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + dom = this.get_node(obj, true); + if(!obj.state.checkbox_disabled) { + obj.state.checkbox_disabled = true; + if(dom && dom.length) { + dom.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-checkbox-disabled'); + } + /** + * triggered when an node's checkbox is disabled + * @event + * @name disable_checkbox.jstree + * @param {Object} node + * @plugin checkbox + */ + this.trigger('disable_checkbox', { 'node' : obj }); + } + }; + /** + * enable a node's checkbox + * @name disable_checkbox(obj) + * @param {mixed} obj an array can be used too + * @trigger enable_checkbox.jstree + * @plugin checkbox + */ + this.enable_checkbox = function (obj) { + var t1, t2, dom; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.enable_checkbox(obj[t1]); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + dom = this.get_node(obj, true); + if(obj.state.checkbox_disabled) { + obj.state.checkbox_disabled = false; + if(dom && dom.length) { + dom.children('.jstree-anchor').children('.jstree-checkbox').removeClass('jstree-checkbox-disabled'); + } + /** + * triggered when an node's checkbox is enabled + * @event + * @name enable_checkbox.jstree + * @param {Object} node + * @plugin checkbox + */ + this.trigger('enable_checkbox', { 'node' : obj }); + } + }; + + this.activate_node = function (obj, e) { + if($(e.target).hasClass('jstree-checkbox-disabled')) { + return false; + } + if(this.settings.checkbox.tie_selection && (this.settings.checkbox.whole_node || $(e.target).hasClass('jstree-checkbox'))) { + e.ctrlKey = true; + } + if(this.settings.checkbox.tie_selection || (!this.settings.checkbox.whole_node && !$(e.target).hasClass('jstree-checkbox'))) { + return parent.activate_node.call(this, obj, e); + } + if(this.is_disabled(obj)) { + return false; + } + if(this.is_checked(obj)) { + this.uncheck_node(obj, e); + } + else { + this.check_node(obj, e); + } + this.trigger('activate_node', { 'node' : this.get_node(obj) }); + }; + + /** + * check a node (only if tie_selection in checkbox settings is false, otherwise select_node will be called internally) + * @name check_node(obj) + * @param {mixed} obj an array can be used to check multiple nodes + * @trigger check_node.jstree + * @plugin checkbox + */ + this.check_node = function (obj, e) { + if(this.settings.checkbox.tie_selection) { return this.select_node(obj, false, true, e); } + var dom, t1, t2, th; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.check_node(obj[t1], e); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + dom = this.get_node(obj, true); + if(!obj.state.checked) { + obj.state.checked = true; + this._data.checkbox.selected.push(obj.id); + if(dom && dom.length) { + dom.children('.jstree-anchor').addClass('jstree-checked'); + } + /** + * triggered when an node is checked (only if tie_selection in checkbox settings is false) + * @event + * @name check_node.jstree + * @param {Object} node + * @param {Array} selected the current selection + * @param {Object} event the event (if any) that triggered this check_node + * @plugin checkbox + */ + this.trigger('check_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e }); + } + }; + /** + * uncheck a node (only if tie_selection in checkbox settings is false, otherwise deselect_node will be called internally) + * @name uncheck_node(obj) + * @param {mixed} obj an array can be used to uncheck multiple nodes + * @trigger uncheck_node.jstree + * @plugin checkbox + */ + this.uncheck_node = function (obj, e) { + if(this.settings.checkbox.tie_selection) { return this.deselect_node(obj, false, e); } + var t1, t2, dom; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.uncheck_node(obj[t1], e); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + dom = this.get_node(obj, true); + if(obj.state.checked) { + obj.state.checked = false; + this._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, obj.id); + if(dom.length) { + dom.children('.jstree-anchor').removeClass('jstree-checked'); + } + /** + * triggered when an node is unchecked (only if tie_selection in checkbox settings is false) + * @event + * @name uncheck_node.jstree + * @param {Object} node + * @param {Array} selected the current selection + * @param {Object} event the event (if any) that triggered this uncheck_node + * @plugin checkbox + */ + this.trigger('uncheck_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e }); + } + }; + /** + * checks all nodes in the tree (only if tie_selection in checkbox settings is false, otherwise select_all will be called internally) + * @name check_all() + * @trigger check_all.jstree, changed.jstree + * @plugin checkbox + */ + this.check_all = function () { + if(this.settings.checkbox.tie_selection) { return this.select_all(); } + var tmp = this._data.checkbox.selected.concat([]), i, j; + this._data.checkbox.selected = this._model.data[$.jstree.root].children_d.concat(); + for(i = 0, j = this._data.checkbox.selected.length; i < j; i++) { + if(this._model.data[this._data.checkbox.selected[i]]) { + this._model.data[this._data.checkbox.selected[i]].state.checked = true; + } + } + this.redraw(true); + /** + * triggered when all nodes are checked (only if tie_selection in checkbox settings is false) + * @event + * @name check_all.jstree + * @param {Array} selected the current selection + * @plugin checkbox + */ + this.trigger('check_all', { 'selected' : this._data.checkbox.selected }); + }; + /** + * uncheck all checked nodes (only if tie_selection in checkbox settings is false, otherwise deselect_all will be called internally) + * @name uncheck_all() + * @trigger uncheck_all.jstree + * @plugin checkbox + */ + this.uncheck_all = function () { + if(this.settings.checkbox.tie_selection) { return this.deselect_all(); } + var tmp = this._data.checkbox.selected.concat([]), i, j; + for(i = 0, j = this._data.checkbox.selected.length; i < j; i++) { + if(this._model.data[this._data.checkbox.selected[i]]) { + this._model.data[this._data.checkbox.selected[i]].state.checked = false; + } + } + this._data.checkbox.selected = []; + this.element.find('.jstree-checked').removeClass('jstree-checked'); + /** + * triggered when all nodes are unchecked (only if tie_selection in checkbox settings is false) + * @event + * @name uncheck_all.jstree + * @param {Object} node the previous selection + * @param {Array} selected the current selection + * @plugin checkbox + */ + this.trigger('uncheck_all', { 'selected' : this._data.checkbox.selected, 'node' : tmp }); + }; + /** + * checks if a node is checked (if tie_selection is on in the settings this function will return the same as is_selected) + * @name is_checked(obj) + * @param {mixed} obj + * @return {Boolean} + * @plugin checkbox + */ + this.is_checked = function (obj) { + if(this.settings.checkbox.tie_selection) { return this.is_selected(obj); } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + return obj.state.checked; + }; + /** + * get an array of all checked nodes (if tie_selection is on in the settings this function will return the same as get_selected) + * @name get_checked([full]) + * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned + * @return {Array} + * @plugin checkbox + */ + this.get_checked = function (full) { + if(this.settings.checkbox.tie_selection) { return this.get_selected(full); } + return full ? $.map(this._data.checkbox.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.checkbox.selected; + }; + /** + * get an array of all top level checked nodes (ignoring children of checked nodes) (if tie_selection is on in the settings this function will return the same as get_top_selected) + * @name get_top_checked([full]) + * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned + * @return {Array} + * @plugin checkbox + */ + this.get_top_checked = function (full) { + if(this.settings.checkbox.tie_selection) { return this.get_top_selected(full); } + var tmp = this.get_checked(true), + obj = {}, i, j, k, l; + for(i = 0, j = tmp.length; i < j; i++) { + obj[tmp[i].id] = tmp[i]; + } + for(i = 0, j = tmp.length; i < j; i++) { + for(k = 0, l = tmp[i].children_d.length; k < l; k++) { + if(obj[tmp[i].children_d[k]]) { + delete obj[tmp[i].children_d[k]]; + } + } + } + tmp = []; + for(i in obj) { + if(obj.hasOwnProperty(i)) { + tmp.push(i); + } + } + return full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp; + }; + /** + * get an array of all bottom level checked nodes (ignoring selected parents) (if tie_selection is on in the settings this function will return the same as get_bottom_selected) + * @name get_bottom_checked([full]) + * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned + * @return {Array} + * @plugin checkbox + */ + this.get_bottom_checked = function (full) { + if(this.settings.checkbox.tie_selection) { return this.get_bottom_selected(full); } + var tmp = this.get_checked(true), + obj = [], i, j; + for(i = 0, j = tmp.length; i < j; i++) { + if(!tmp[i].children.length) { + obj.push(tmp[i].id); + } + } + return full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj; + }; + this.load_node = function (obj, callback) { + var k, l, i, j, c, tmp; + if(!$.isArray(obj) && !this.settings.checkbox.tie_selection) { + tmp = this.get_node(obj); + if(tmp && tmp.state.loaded) { + for(k = 0, l = tmp.children_d.length; k < l; k++) { + if(this._model.data[tmp.children_d[k]].state.checked) { + c = true; + this._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, tmp.children_d[k]); + } + } + } + } + return parent.load_node.apply(this, arguments); + }; + this.get_state = function () { + var state = parent.get_state.apply(this, arguments); + if(this.settings.checkbox.tie_selection) { return state; } + state.checkbox = this._data.checkbox.selected.slice(); + return state; + }; + this.set_state = function (state, callback) { + var res = parent.set_state.apply(this, arguments); + if(res && state.checkbox) { + if(!this.settings.checkbox.tie_selection) { + this.uncheck_all(); + var _this = this; + $.each(state.checkbox, function (i, v) { + _this.check_node(v); + }); + } + delete state.checkbox; + this.set_state(state, callback); + return false; + } + return res; + }; + this.refresh = function (skip_loading, forget_state) { + if(!this.settings.checkbox.tie_selection) { + this._data.checkbox.selected = []; + } + return parent.refresh.apply(this, arguments); + }; + }; + + // include the checkbox plugin by default + // $.jstree.defaults.plugins.push("checkbox"); + +/** + * ### Conditionalselect plugin + * + * This plugin allows defining a callback to allow or deny node selection by user input (activate node method). + */ + + /** + * a callback (function) which is invoked in the instance's scope and receives two arguments - the node and the event that triggered the `activate_node` call. Returning false prevents working with the node, returning true allows invoking activate_node. Defaults to returning `true`. + * @name $.jstree.defaults.checkbox.visible + * @plugin checkbox + */ + $.jstree.defaults.conditionalselect = function () { return true; }; + $.jstree.plugins.conditionalselect = function (options, parent) { + // own function + this.activate_node = function (obj, e) { + if(this.settings.conditionalselect.call(this, this.get_node(obj), e)) { + parent.activate_node.call(this, obj, e); + } + }; + }; + + +/** + * ### Contextmenu plugin + * + * Shows a context menu when a node is right-clicked. + */ + + /** + * stores all defaults for the contextmenu plugin + * @name $.jstree.defaults.contextmenu + * @plugin contextmenu + */ + $.jstree.defaults.contextmenu = { + /** + * a boolean indicating if the node should be selected when the context menu is invoked on it. Defaults to `true`. + * @name $.jstree.defaults.contextmenu.select_node + * @plugin contextmenu + */ + select_node : true, + /** + * a boolean indicating if the menu should be shown aligned with the node. Defaults to `true`, otherwise the mouse coordinates are used. + * @name $.jstree.defaults.contextmenu.show_at_node + * @plugin contextmenu + */ + show_at_node : true, + /** + * an object of actions, or a function that accepts a node and a callback function and calls the callback function with an object of actions available for that node (you can also return the items too). + * + * Each action consists of a key (a unique name) and a value which is an object with the following properties (only label and action are required). Once a menu item is activated the `action` function will be invoked with an object containing the following keys: item - the contextmenu item definition as seen below, reference - the DOM node that was used (the tree node), element - the contextmenu DOM element, position - an object with x/y properties indicating the position of the menu. + * + * * `separator_before` - a boolean indicating if there should be a separator before this item + * * `separator_after` - a boolean indicating if there should be a separator after this item + * * `_disabled` - a boolean indicating if this action should be disabled + * * `label` - a string - the name of the action (could be a function returning a string) + * * `title` - a string - an optional tooltip for the item + * * `action` - a function to be executed if this item is chosen, the function will receive + * * `icon` - a string, can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class + * * `shortcut` - keyCode which will trigger the action if the menu is open (for example `113` for rename, which equals F2) + * * `shortcut_label` - shortcut label (like for example `F2` for rename) + * * `submenu` - an object with the same structure as $.jstree.defaults.contextmenu.items which can be used to create a submenu - each key will be rendered as a separate option in a submenu that will appear once the current item is hovered + * + * @name $.jstree.defaults.contextmenu.items + * @plugin contextmenu + */ + items : function (o, cb) { // Could be an object directly + return { + "create" : { + "separator_before" : false, + "separator_after" : true, + "_disabled" : false, //(this.check("create_node", data.reference, {}, "last")), + "label" : "Create", + "action" : function (data) { + var inst = $.jstree.reference(data.reference), + obj = inst.get_node(data.reference); + inst.create_node(obj, {}, "last", function (new_node) { + setTimeout(function () { inst.edit(new_node); },0); + }); + } + }, + "rename" : { + "separator_before" : false, + "separator_after" : false, + "_disabled" : false, //(this.check("rename_node", data.reference, this.get_parent(data.reference), "")), + "label" : "Rename", + /*! + "shortcut" : 113, + "shortcut_label" : 'F2', + "icon" : "glyphicon glyphicon-leaf", + */ + "action" : function (data) { + var inst = $.jstree.reference(data.reference), + obj = inst.get_node(data.reference); + inst.edit(obj); + } + }, + "remove" : { + "separator_before" : false, + "icon" : false, + "separator_after" : false, + "_disabled" : false, //(this.check("delete_node", data.reference, this.get_parent(data.reference), "")), + "label" : "Delete", + "action" : function (data) { + var inst = $.jstree.reference(data.reference), + obj = inst.get_node(data.reference); + if(inst.is_selected(obj)) { + inst.delete_node(inst.get_selected()); + } + else { + inst.delete_node(obj); + } + } + }, + "ccp" : { + "separator_before" : true, + "icon" : false, + "separator_after" : false, + "label" : "Edit", + "action" : false, + "submenu" : { + "cut" : { + "separator_before" : false, + "separator_after" : false, + "label" : "Cut", + "action" : function (data) { + var inst = $.jstree.reference(data.reference), + obj = inst.get_node(data.reference); + if(inst.is_selected(obj)) { + inst.cut(inst.get_top_selected()); + } + else { + inst.cut(obj); + } + } + }, + "copy" : { + "separator_before" : false, + "icon" : false, + "separator_after" : false, + "label" : "Copy", + "action" : function (data) { + var inst = $.jstree.reference(data.reference), + obj = inst.get_node(data.reference); + if(inst.is_selected(obj)) { + inst.copy(inst.get_top_selected()); + } + else { + inst.copy(obj); + } + } + }, + "paste" : { + "separator_before" : false, + "icon" : false, + "_disabled" : function (data) { + return !$.jstree.reference(data.reference).can_paste(); + }, + "separator_after" : false, + "label" : "Paste", + "action" : function (data) { + var inst = $.jstree.reference(data.reference), + obj = inst.get_node(data.reference); + inst.paste(obj); + } + } + } + } + }; + } + }; + + $.jstree.plugins.contextmenu = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + + var last_ts = 0, cto = null, ex, ey; + this.element + .on("contextmenu.jstree", ".jstree-anchor", $.proxy(function (e, data) { + if (e.target.tagName.toLowerCase() === 'input') { + return; + } + e.preventDefault(); + last_ts = e.ctrlKey ? +new Date() : 0; + if(data || cto) { + last_ts = (+new Date()) + 10000; + } + if(cto) { + clearTimeout(cto); + } + if(!this.is_loading(e.currentTarget)) { + this.show_contextmenu(e.currentTarget, e.pageX, e.pageY, e); + } + }, this)) + .on("click.jstree", ".jstree-anchor", $.proxy(function (e) { + if(this._data.contextmenu.visible && (!last_ts || (+new Date()) - last_ts > 250)) { // work around safari & macOS ctrl+click + $.vakata.context.hide(); + } + last_ts = 0; + }, this)) + .on("touchstart.jstree", ".jstree-anchor", function (e) { + if(!e.originalEvent || !e.originalEvent.changedTouches || !e.originalEvent.changedTouches[0]) { + return; + } + ex = e.originalEvent.changedTouches[0].clientX; + ey = e.originalEvent.changedTouches[0].clientY; + cto = setTimeout(function () { + $(e.currentTarget).trigger('contextmenu', true); + }, 750); + }) + .on('touchmove.vakata.jstree', function (e) { + if(cto && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0] && (Math.abs(ex - e.originalEvent.changedTouches[0].clientX) > 50 || Math.abs(ey - e.originalEvent.changedTouches[0].clientY) > 50)) { + clearTimeout(cto); + } + }) + .on('touchend.vakata.jstree', function (e) { + if(cto) { + clearTimeout(cto); + } + }); + + /*! + if(!('oncontextmenu' in document.body) && ('ontouchstart' in document.body)) { + var el = null, tm = null; + this.element + .on("touchstart", ".jstree-anchor", function (e) { + el = e.currentTarget; + tm = +new Date(); + $(document).one("touchend", function (e) { + e.target = document.elementFromPoint(e.originalEvent.targetTouches[0].pageX - window.pageXOffset, e.originalEvent.targetTouches[0].pageY - window.pageYOffset); + e.currentTarget = e.target; + tm = ((+(new Date())) - tm); + if(e.target === el && tm > 600 && tm < 1000) { + e.preventDefault(); + $(el).trigger('contextmenu', e); + } + el = null; + tm = null; + }); + }); + } + */ + $(document).on("context_hide.vakata.jstree", $.proxy(function (e, data) { + this._data.contextmenu.visible = false; + $(data.reference).removeClass('jstree-context'); + }, this)); + }; + this.teardown = function () { + if(this._data.contextmenu.visible) { + $.vakata.context.hide(); + } + parent.teardown.call(this); + }; + + /** + * prepare and show the context menu for a node + * @name show_contextmenu(obj [, x, y]) + * @param {mixed} obj the node + * @param {Number} x the x-coordinate relative to the document to show the menu at + * @param {Number} y the y-coordinate relative to the document to show the menu at + * @param {Object} e the event if available that triggered the contextmenu + * @plugin contextmenu + * @trigger show_contextmenu.jstree + */ + this.show_contextmenu = function (obj, x, y, e) { + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + var s = this.settings.contextmenu, + d = this.get_node(obj, true), + a = d.children(".jstree-anchor"), + o = false, + i = false; + if(s.show_at_node || x === undefined || y === undefined) { + o = a.offset(); + x = o.left; + y = o.top + this._data.core.li_height; + } + if(this.settings.contextmenu.select_node && !this.is_selected(obj)) { + this.activate_node(obj, e); + } + + i = s.items; + if($.isFunction(i)) { + i = i.call(this, obj, $.proxy(function (i) { + this._show_contextmenu(obj, x, y, i); + }, this)); + } + if($.isPlainObject(i)) { + this._show_contextmenu(obj, x, y, i); + } + }; + /** + * show the prepared context menu for a node + * @name _show_contextmenu(obj, x, y, i) + * @param {mixed} obj the node + * @param {Number} x the x-coordinate relative to the document to show the menu at + * @param {Number} y the y-coordinate relative to the document to show the menu at + * @param {Number} i the object of items to show + * @plugin contextmenu + * @trigger show_contextmenu.jstree + * @private + */ + this._show_contextmenu = function (obj, x, y, i) { + var d = this.get_node(obj, true), + a = d.children(".jstree-anchor"); + $(document).one("context_show.vakata.jstree", $.proxy(function (e, data) { + var cls = 'jstree-contextmenu jstree-' + this.get_theme() + '-contextmenu'; + $(data.element).addClass(cls); + a.addClass('jstree-context'); + }, this)); + this._data.contextmenu.visible = true; + $.vakata.context.show(a, { 'x' : x, 'y' : y }, i); + /** + * triggered when the contextmenu is shown for a node + * @event + * @name show_contextmenu.jstree + * @param {Object} node the node + * @param {Number} x the x-coordinate of the menu relative to the document + * @param {Number} y the y-coordinate of the menu relative to the document + * @plugin contextmenu + */ + this.trigger('show_contextmenu', { "node" : obj, "x" : x, "y" : y }); + }; + }; + + // contextmenu helper + (function ($) { + var right_to_left = false, + vakata_context = { + element : false, + reference : false, + position_x : 0, + position_y : 0, + items : [], + html : "", + is_visible : false + }; + + $.vakata.context = { + settings : { + hide_onmouseleave : 0, + icons : true + }, + _trigger : function (event_name) { + $(document).triggerHandler("context_" + event_name + ".vakata", { + "reference" : vakata_context.reference, + "element" : vakata_context.element, + "position" : { + "x" : vakata_context.position_x, + "y" : vakata_context.position_y + } + }); + }, + _execute : function (i) { + i = vakata_context.items[i]; + return i && (!i._disabled || ($.isFunction(i._disabled) && !i._disabled({ "item" : i, "reference" : vakata_context.reference, "element" : vakata_context.element }))) && i.action ? i.action.call(null, { + "item" : i, + "reference" : vakata_context.reference, + "element" : vakata_context.element, + "position" : { + "x" : vakata_context.position_x, + "y" : vakata_context.position_y + } + }) : false; + }, + _parse : function (o, is_callback) { + if(!o) { return false; } + if(!is_callback) { + vakata_context.html = ""; + vakata_context.items = []; + } + var str = "", + sep = false, + tmp; + + if(is_callback) { str += "<"+"ul>"; } + $.each(o, function (i, val) { + if(!val) { return true; } + vakata_context.items.push(val); + if(!sep && val.separator_before) { + str += "<"+"li class='vakata-context-separator'><"+"a href='#' " + ($.vakata.context.settings.icons ? '' : 'style="margin-left:0px;"') + "> <"+"/a><"+"/li>"; + } + sep = false; + str += "<"+"li class='" + (val._class || "") + (val._disabled === true || ($.isFunction(val._disabled) && val._disabled({ "item" : val, "reference" : vakata_context.reference, "element" : vakata_context.element })) ? " vakata-contextmenu-disabled " : "") + "' "+(val.shortcut?" data-shortcut='"+val.shortcut+"' ":'')+">"; + str += "<"+"a href='#' rel='" + (vakata_context.items.length - 1) + "' " + (val.title ? "title='" + val.title + "'" : "") + ">"; + if($.vakata.context.settings.icons) { + str += "<"+"i "; + if(val.icon) { + if(val.icon.indexOf("/") !== -1 || val.icon.indexOf(".") !== -1) { str += " style='background:url(\"" + val.icon + "\") center center no-repeat' "; } + else { str += " class='" + val.icon + "' "; } + } + str += "><"+"/i><"+"span class='vakata-contextmenu-sep'> <"+"/span>"; + } + str += ($.isFunction(val.label) ? val.label({ "item" : i, "reference" : vakata_context.reference, "element" : vakata_context.element }) : val.label) + (val.shortcut?' '+ (val.shortcut_label || '') +'':'') + "<"+"/a>"; + if(val.submenu) { + tmp = $.vakata.context._parse(val.submenu, true); + if(tmp) { str += tmp; } + } + str += "<"+"/li>"; + if(val.separator_after) { + str += "<"+"li class='vakata-context-separator'><"+"a href='#' " + ($.vakata.context.settings.icons ? '' : 'style="margin-left:0px;"') + "> <"+"/a><"+"/li>"; + sep = true; + } + }); + str = str.replace(/
  • <\/li\>$/,""); + if(is_callback) { str += ""; } + /** + * triggered on the document when the contextmenu is parsed (HTML is built) + * @event + * @plugin contextmenu + * @name context_parse.vakata + * @param {jQuery} reference the element that was right clicked + * @param {jQuery} element the DOM element of the menu itself + * @param {Object} position the x & y coordinates of the menu + */ + if(!is_callback) { vakata_context.html = str; $.vakata.context._trigger("parse"); } + return str.length > 10 ? str : false; + }, + _show_submenu : function (o) { + o = $(o); + if(!o.length || !o.children("ul").length) { return; } + var e = o.children("ul"), + xl = o.offset().left, + x = xl + o.outerWidth(), + y = o.offset().top, + w = e.width(), + h = e.height(), + dw = $(window).width() + $(window).scrollLeft(), + dh = $(window).height() + $(window).scrollTop(); + // може да се спести е една проверка - дали няма някой от класовете вече нагоре + if(right_to_left) { + o[x - (w + 10 + o.outerWidth()) < 0 ? "addClass" : "removeClass"]("vakata-context-left"); + } + else { + o[x + w > dw && xl > dw - x ? "addClass" : "removeClass"]("vakata-context-right"); + } + if(y + h + 10 > dh) { + e.css("bottom","-1px"); + } + + //if does not fit - stick it to the side + if (o.hasClass('vakata-context-right')) { + if (xl < w) { + e.css("margin-right", xl - w); + } + } else { + if (dw - x < w) { + e.css("margin-left", dw - x - w); + } + } + + e.show(); + }, + show : function (reference, position, data) { + var o, e, x, y, w, h, dw, dh, cond = true; + if(vakata_context.element && vakata_context.element.length) { + vakata_context.element.width(''); + } + switch(cond) { + case (!position && !reference): + return false; + case (!!position && !!reference): + vakata_context.reference = reference; + vakata_context.position_x = position.x; + vakata_context.position_y = position.y; + break; + case (!position && !!reference): + vakata_context.reference = reference; + o = reference.offset(); + vakata_context.position_x = o.left + reference.outerHeight(); + vakata_context.position_y = o.top; + break; + case (!!position && !reference): + vakata_context.position_x = position.x; + vakata_context.position_y = position.y; + break; + } + if(!!reference && !data && $(reference).data('vakata_contextmenu')) { + data = $(reference).data('vakata_contextmenu'); + } + if($.vakata.context._parse(data)) { + vakata_context.element.html(vakata_context.html); + } + if(vakata_context.items.length) { + vakata_context.element.appendTo("body"); + e = vakata_context.element; + x = vakata_context.position_x; + y = vakata_context.position_y; + w = e.width(); + h = e.height(); + dw = $(window).width() + $(window).scrollLeft(); + dh = $(window).height() + $(window).scrollTop(); + if(right_to_left) { + x -= (e.outerWidth() - $(reference).outerWidth()); + if(x < $(window).scrollLeft() + 20) { + x = $(window).scrollLeft() + 20; + } + } + if(x + w + 20 > dw) { + x = dw - (w + 20); + } + if(y + h + 20 > dh) { + y = dh - (h + 20); + } + + vakata_context.element + .css({ "left" : x, "top" : y }) + .show() + .find('a').first().focus().parent().addClass("vakata-context-hover"); + vakata_context.is_visible = true; + /** + * triggered on the document when the contextmenu is shown + * @event + * @plugin contextmenu + * @name context_show.vakata + * @param {jQuery} reference the element that was right clicked + * @param {jQuery} element the DOM element of the menu itself + * @param {Object} position the x & y coordinates of the menu + */ + $.vakata.context._trigger("show"); + } + }, + hide : function () { + if(vakata_context.is_visible) { + vakata_context.element.hide().find("ul").hide().end().find(':focus').blur().end().detach(); + vakata_context.is_visible = false; + /** + * triggered on the document when the contextmenu is hidden + * @event + * @plugin contextmenu + * @name context_hide.vakata + * @param {jQuery} reference the element that was right clicked + * @param {jQuery} element the DOM element of the menu itself + * @param {Object} position the x & y coordinates of the menu + */ + $.vakata.context._trigger("hide"); + } + } + }; + $(function () { + right_to_left = $("body").css("direction") === "rtl"; + var to = false; + + vakata_context.element = $("
      "); + vakata_context.element + .on("mouseenter", "li", function (e) { + e.stopImmediatePropagation(); + + if($.contains(this, e.relatedTarget)) { + // премахнато заради delegate mouseleave по-долу + // $(this).find(".vakata-context-hover").removeClass("vakata-context-hover"); + return; + } + + if(to) { clearTimeout(to); } + vakata_context.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(); + + $(this) + .siblings().find("ul").hide().end().end() + .parentsUntil(".vakata-context", "li").addBack().addClass("vakata-context-hover"); + $.vakata.context._show_submenu(this); + }) + // тестово - дали не натоварва? + .on("mouseleave", "li", function (e) { + if($.contains(this, e.relatedTarget)) { return; } + $(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover"); + }) + .on("mouseleave", function (e) { + $(this).find(".vakata-context-hover").removeClass("vakata-context-hover"); + if($.vakata.context.settings.hide_onmouseleave) { + to = setTimeout( + (function (t) { + return function () { $.vakata.context.hide(); }; + }(this)), $.vakata.context.settings.hide_onmouseleave); + } + }) + .on("click", "a", function (e) { + e.preventDefault(); + //}) + //.on("mouseup", "a", function (e) { + if(!$(this).blur().parent().hasClass("vakata-context-disabled") && $.vakata.context._execute($(this).attr("rel")) !== false) { + $.vakata.context.hide(); + } + }) + .on('keydown', 'a', function (e) { + var o = null; + switch(e.which) { + case 13: + case 32: + e.type = "click"; + e.preventDefault(); + $(e.currentTarget).trigger(e); + break; + case 37: + if(vakata_context.is_visible) { + vakata_context.element.find(".vakata-context-hover").last().closest("li").first().find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children('a').focus(); + e.stopImmediatePropagation(); + e.preventDefault(); + } + break; + case 38: + if(vakata_context.is_visible) { + o = vakata_context.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(); + if(!o.length) { o = vakata_context.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last(); } + o.addClass("vakata-context-hover").children('a').focus(); + e.stopImmediatePropagation(); + e.preventDefault(); + } + break; + case 39: + if(vakata_context.is_visible) { + vakata_context.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children('a').focus(); + e.stopImmediatePropagation(); + e.preventDefault(); + } + break; + case 40: + if(vakata_context.is_visible) { + o = vakata_context.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(); + if(!o.length) { o = vakata_context.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first(); } + o.addClass("vakata-context-hover").children('a').focus(); + e.stopImmediatePropagation(); + e.preventDefault(); + } + break; + case 27: + $.vakata.context.hide(); + e.preventDefault(); + break; + default: + //console.log(e.which); + break; + } + }) + .on('keydown', function (e) { + e.preventDefault(); + var a = vakata_context.element.find('.vakata-contextmenu-shortcut-' + e.which).parent(); + if(a.parent().not('.vakata-context-disabled')) { + a.click(); + } + }); + + $(document) + .on("mousedown.vakata.jstree", function (e) { + if(vakata_context.is_visible && !$.contains(vakata_context.element[0], e.target)) { + $.vakata.context.hide(); + } + }) + .on("context_show.vakata.jstree", function (e, data) { + vakata_context.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"); + if(right_to_left) { + vakata_context.element.addClass("vakata-context-rtl").css("direction", "rtl"); + } + // also apply a RTL class? + vakata_context.element.find("ul").hide().end(); + }); + }); + }($)); + // $.jstree.defaults.plugins.push("contextmenu"); + + +/** + * ### Drag'n'drop plugin + * + * Enables dragging and dropping of nodes in the tree, resulting in a move or copy operations. + */ + + /** + * stores all defaults for the drag'n'drop plugin + * @name $.jstree.defaults.dnd + * @plugin dnd + */ + $.jstree.defaults.dnd = { + /** + * a boolean indicating if a copy should be possible while dragging (by pressint the meta key or Ctrl). Defaults to `true`. + * @name $.jstree.defaults.dnd.copy + * @plugin dnd + */ + copy : true, + /** + * a number indicating how long a node should remain hovered while dragging to be opened. Defaults to `500`. + * @name $.jstree.defaults.dnd.open_timeout + * @plugin dnd + */ + open_timeout : 500, + /** + * a function invoked each time a node is about to be dragged, invoked in the tree's scope and receives the nodes about to be dragged as an argument (array) and the event that started the drag - return `false` to prevent dragging + * @name $.jstree.defaults.dnd.is_draggable + * @plugin dnd + */ + is_draggable : true, + /** + * a boolean indicating if checks should constantly be made while the user is dragging the node (as opposed to checking only on drop), default is `true` + * @name $.jstree.defaults.dnd.check_while_dragging + * @plugin dnd + */ + check_while_dragging : true, + /** + * a boolean indicating if nodes from this tree should only be copied with dnd (as opposed to moved), default is `false` + * @name $.jstree.defaults.dnd.always_copy + * @plugin dnd + */ + always_copy : false, + /** + * when dropping a node "inside", this setting indicates the position the node should go to - it can be an integer or a string: "first" (same as 0) or "last", default is `0` + * @name $.jstree.defaults.dnd.inside_pos + * @plugin dnd + */ + inside_pos : 0, + /** + * when starting the drag on a node that is selected this setting controls if all selected nodes are dragged or only the single node, default is `true`, which means all selected nodes are dragged when the drag is started on a selected node + * @name $.jstree.defaults.dnd.drag_selection + * @plugin dnd + */ + drag_selection : true, + /** + * controls whether dnd works on touch devices. If left as boolean true dnd will work the same as in desktop browsers, which in some cases may impair scrolling. If set to boolean false dnd will not work on touch devices. There is a special third option - string "selected" which means only selected nodes can be dragged on touch devices. + * @name $.jstree.defaults.dnd.touch + * @plugin dnd + */ + touch : true, + /** + * controls whether items can be dropped anywhere on the node, not just on the anchor, by default only the node anchor is a valid drop target. Works best with the wholerow plugin. If enabled on mobile depending on the interface it might be hard for the user to cancel the drop, since the whole tree container will be a valid drop target. + * @name $.jstree.defaults.dnd.large_drop_target + * @plugin dnd + */ + large_drop_target : false, + /** + * controls whether a drag can be initiated from any part of the node and not just the text/icon part, works best with the wholerow plugin. Keep in mind it can cause problems with tree scrolling on mobile depending on the interface - in that case set the touch option to "selected". + * @name $.jstree.defaults.dnd.large_drag_target + * @plugin dnd + */ + large_drag_target : false, + /** + * controls whether use HTML5 dnd api instead of classical. That will allow better integration of dnd events with other HTML5 controls. + * @reference http://caniuse.com/#feat=dragndrop + * @name $.jstree.defaults.dnd.use_html5 + * @plugin dnd + */ + use_html5: false + }; + var drg, elm; + // TODO: now check works by checking for each node individually, how about max_children, unique, etc? + $.jstree.plugins.dnd = function (options, parent) { + this.init = function (el, options) { + parent.init.call(this, el, options); + this.settings.dnd.use_html5 = this.settings.dnd.use_html5 && ('draggable' in document.createElement('span')); + }; + this.bind = function () { + parent.bind.call(this); + + this.element + .on(this.settings.dnd.use_html5 ? 'dragstart.jstree' : 'mousedown.jstree touchstart.jstree', this.settings.dnd.large_drag_target ? '.jstree-node' : '.jstree-anchor', $.proxy(function (e) { + if(this.settings.dnd.large_drag_target && $(e.target).closest('.jstree-node')[0] !== e.currentTarget) { + return true; + } + if(e.type === "touchstart" && (!this.settings.dnd.touch || (this.settings.dnd.touch === 'selected' && !$(e.currentTarget).closest('.jstree-node').children('.jstree-anchor').hasClass('jstree-clicked')))) { + return true; + } + var obj = this.get_node(e.target), + mlt = this.is_selected(obj) && this.settings.dnd.drag_selection ? this.get_top_selected().length : 1, + txt = (mlt > 1 ? mlt + ' ' + this.get_string('nodes') : this.get_text(e.currentTarget)); + if(this.settings.core.force_text) { + txt = $.vakata.html.escape(txt); + } + if(obj && obj.id && obj.id !== $.jstree.root && (e.which === 1 || e.type === "touchstart" || e.type === "dragstart") && + (this.settings.dnd.is_draggable === true || ($.isFunction(this.settings.dnd.is_draggable) && this.settings.dnd.is_draggable.call(this, (mlt > 1 ? this.get_top_selected(true) : [obj]), e))) + ) { + drg = { 'jstree' : true, 'origin' : this, 'obj' : this.get_node(obj,true), 'nodes' : mlt > 1 ? this.get_top_selected() : [obj.id] }; + elm = e.currentTarget; + if (this.settings.dnd.use_html5) { + $.vakata.dnd._trigger('start', e, { 'helper': $(), 'element': elm, 'data': drg }); + } else { + this.element.trigger('mousedown.jstree'); + return $.vakata.dnd.start(e, drg, '
      ' + txt + '
      '); + } + } + }, this)); + if (this.settings.dnd.use_html5) { + this.element + .on('dragover.jstree', function (e) { + e.preventDefault(); + $.vakata.dnd._trigger('move', e, { 'helper': $(), 'element': elm, 'data': drg }); + return false; + }) + //.on('dragenter.jstree', this.settings.dnd.large_drop_target ? '.jstree-node' : '.jstree-anchor', $.proxy(function (e) { + // e.preventDefault(); + // $.vakata.dnd._trigger('move', e, { 'helper': $(), 'element': elm, 'data': drg }); + // return false; + // }, this)) + .on('drop.jstree', $.proxy(function (e) { + e.preventDefault(); + $.vakata.dnd._trigger('stop', e, { 'helper': $(), 'element': elm, 'data': drg }); + return false; + }, this)); + } + }; + this.redraw_node = function(obj, deep, callback, force_render) { + obj = parent.redraw_node.apply(this, arguments); + if (obj && this.settings.dnd.use_html5) { + if (this.settings.dnd.large_drag_target) { + obj.setAttribute('draggable', true); + } else { + var i, j, tmp = null; + for(i = 0, j = obj.childNodes.length; i < j; i++) { + if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { + tmp = obj.childNodes[i]; + break; + } + } + if(tmp) { + tmp.setAttribute('draggable', true); + } + } + } + return obj; + }; + }; + + $(function() { + // bind only once for all instances + var lastmv = false, + laster = false, + lastev = false, + opento = false, + marker = $('
       
      ').hide(); //.appendTo('body'); + + $(document) + .on('dnd_start.vakata.jstree', function (e, data) { + lastmv = false; + lastev = false; + if(!data || !data.data || !data.data.jstree) { return; } + marker.appendTo('body'); //.show(); + }) + .on('dnd_move.vakata.jstree', function (e, data) { + if(opento) { + if (!data.event || data.event.type !== 'dragover' || data.event.target !== lastev.target) { + clearTimeout(opento); + } + } + if(!data || !data.data || !data.data.jstree) { return; } + + // if we are hovering the marker image do nothing (can happen on "inside" drags) + if(data.event.target.id && data.event.target.id === 'jstree-marker') { + return; + } + lastev = data.event; + + var ins = $.jstree.reference(data.event.target), + ref = false, + off = false, + rel = false, + tmp, l, t, h, p, i, o, ok, t1, t2, op, ps, pr, ip, tm, is_copy, pn; + // if we are over an instance + if(ins && ins._data && ins._data.dnd) { + marker.attr('class', 'jstree-' + ins.get_theme() + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' )); + is_copy = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))); + data.helper + .children().attr('class', 'jstree-' + ins.get_theme() + ' jstree-' + ins.get_theme() + '-' + ins.get_theme_variant() + ' ' + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' )) + .find('.jstree-copy').first()[ is_copy ? 'show' : 'hide' ](); + + // if are hovering the container itself add a new root node + //console.log(data.event); + if( (data.event.target === ins.element[0] || data.event.target === ins.get_container_ul()[0]) && ins.get_container_ul().children().length === 0) { + ok = true; + for(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) { + ok = ok && ins.check( (data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey)) ) ? "copy_node" : "move_node"), (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), $.jstree.root, 'last', { 'dnd' : true, 'ref' : ins.get_node($.jstree.root), 'pos' : 'i', 'origin' : data.data.origin, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }); + if(!ok) { break; } + } + if(ok) { + lastmv = { 'ins' : ins, 'par' : $.jstree.root, 'pos' : 'last' }; + marker.hide(); + data.helper.find('.jstree-icon').first().removeClass('jstree-er').addClass('jstree-ok'); + if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { + data.event.originalEvent.dataTransfer.dropEffect = is_copy ? 'copy' : 'move'; + } + return; + } + } + else { + // if we are hovering a tree node + ref = ins.settings.dnd.large_drop_target ? $(data.event.target).closest('.jstree-node').children('.jstree-anchor') : $(data.event.target).closest('.jstree-anchor'); + if(ref && ref.length && ref.parent().is('.jstree-closed, .jstree-open, .jstree-leaf')) { + off = ref.offset(); + rel = (data.event.pageY !== undefined ? data.event.pageY : data.event.originalEvent.pageY) - off.top; + h = ref.outerHeight(); + if(rel < h / 3) { + o = ['b', 'i', 'a']; + } + else if(rel > h - h / 3) { + o = ['a', 'i', 'b']; + } + else { + o = rel > h / 2 ? ['i', 'a', 'b'] : ['i', 'b', 'a']; + } + $.each(o, function (j, v) { + switch(v) { + case 'b': + l = off.left - 6; + t = off.top; + p = ins.get_parent(ref); + i = ref.parent().index(); + break; + case 'i': + ip = ins.settings.dnd.inside_pos; + tm = ins.get_node(ref.parent()); + l = off.left - 2; + t = off.top + h / 2 + 1; + p = tm.id; + i = ip === 'first' ? 0 : (ip === 'last' ? tm.children.length : Math.min(ip, tm.children.length)); + break; + case 'a': + l = off.left - 6; + t = off.top + h; + p = ins.get_parent(ref); + i = ref.parent().index() + 1; + break; + } + ok = true; + for(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) { + op = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? "copy_node" : "move_node"; + ps = i; + if(op === "move_node" && v === 'a' && (data.data.origin && data.data.origin === ins) && p === ins.get_parent(data.data.nodes[t1])) { + pr = ins.get_node(p); + if(ps > $.inArray(data.data.nodes[t1], pr.children)) { + ps -= 1; + } + } + ok = ok && ( (ins && ins.settings && ins.settings.dnd && ins.settings.dnd.check_while_dragging === false) || ins.check(op, (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), p, ps, { 'dnd' : true, 'ref' : ins.get_node(ref.parent()), 'pos' : v, 'origin' : data.data.origin, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }) ); + if(!ok) { + if(ins && ins.last_error) { laster = ins.last_error(); } + break; + } + } + if(v === 'i' && ref.parent().is('.jstree-closed') && ins.settings.dnd.open_timeout) { + opento = setTimeout((function (x, z) { return function () { x.open_node(z); }; }(ins, ref)), ins.settings.dnd.open_timeout); + } + if(ok) { + pn = ins.get_node(p, true); + if (!pn.hasClass('.jstree-dnd-parent')) { + $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); + pn.addClass('jstree-dnd-parent'); + } + lastmv = { 'ins' : ins, 'par' : p, 'pos' : v === 'i' && ip === 'last' && i === 0 && !ins.is_loaded(tm) ? 'last' : i }; + marker.css({ 'left' : l + 'px', 'top' : t + 'px' }).show(); + data.helper.find('.jstree-icon').first().removeClass('jstree-er').addClass('jstree-ok'); + if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { + data.event.originalEvent.dataTransfer.dropEffect = is_copy ? 'copy' : 'move'; + } + laster = {}; + o = true; + return false; + } + }); + if(o === true) { return; } + } + } + } + $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); + lastmv = false; + data.helper.find('.jstree-icon').removeClass('jstree-ok').addClass('jstree-er'); + if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { + data.event.originalEvent.dataTransfer.dropEffect = 'none'; + } + marker.hide(); + }) + .on('dnd_scroll.vakata.jstree', function (e, data) { + if(!data || !data.data || !data.data.jstree) { return; } + marker.hide(); + lastmv = false; + lastev = false; + data.helper.find('.jstree-icon').first().removeClass('jstree-ok').addClass('jstree-er'); + }) + .on('dnd_stop.vakata.jstree', function (e, data) { + $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); + if(opento) { clearTimeout(opento); } + if(!data || !data.data || !data.data.jstree) { return; } + marker.hide().detach(); + var i, j, nodes = []; + if(lastmv) { + for(i = 0, j = data.data.nodes.length; i < j; i++) { + nodes[i] = data.data.origin ? data.data.origin.get_node(data.data.nodes[i]) : data.data.nodes[i]; + } + lastmv.ins[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? 'copy_node' : 'move_node' ](nodes, lastmv.par, lastmv.pos, false, false, false, data.data.origin); + } + else { + i = $(data.event.target).closest('.jstree'); + if(i.length && laster && laster.error && laster.error === 'check') { + i = i.jstree(true); + if(i) { + i.settings.core.error.call(this, laster); + } + } + } + lastev = false; + lastmv = false; + }) + .on('keyup.jstree keydown.jstree', function (e, data) { + data = $.vakata.dnd._get(); + if(data && data.data && data.data.jstree) { + if (e.type === "keyup" && e.which === 27) { + if (opento) { clearTimeout(opento); } + lastmv = false; + laster = false; + lastev = false; + opento = false; + marker.hide().detach(); + $.vakata.dnd._clean(); + } else { + data.helper.find('.jstree-copy').first()[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (e.metaKey || e.ctrlKey))) ? 'show' : 'hide' ](); + if(lastev) { + lastev.metaKey = e.metaKey; + lastev.ctrlKey = e.ctrlKey; + $.vakata.dnd._trigger('move', lastev); + } + } + } + }); + }); + + // helpers + (function ($) { + $.vakata.html = { + div : $('
      '), + escape : function (str) { + return $.vakata.html.div.text(str).html(); + }, + strip : function (str) { + return $.vakata.html.div.empty().append($.parseHTML(str)).text(); + } + }; + // private variable + var vakata_dnd = { + element : false, + target : false, + is_down : false, + is_drag : false, + helper : false, + helper_w: 0, + data : false, + init_x : 0, + init_y : 0, + scroll_l: 0, + scroll_t: 0, + scroll_e: false, + scroll_i: false, + is_touch: false + }; + $.vakata.dnd = { + settings : { + scroll_speed : 10, + scroll_proximity : 20, + helper_left : 5, + helper_top : 10, + threshold : 5, + threshold_touch : 50 + }, + _trigger : function (event_name, e, data) { + if (data === undefined) { + data = $.vakata.dnd._get(); + } + data.event = e; + $(document).triggerHandler("dnd_" + event_name + ".vakata", data); + }, + _get : function () { + return { + "data" : vakata_dnd.data, + "element" : vakata_dnd.element, + "helper" : vakata_dnd.helper + }; + }, + _clean : function () { + if(vakata_dnd.helper) { vakata_dnd.helper.remove(); } + if(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; } + vakata_dnd = { + element : false, + target : false, + is_down : false, + is_drag : false, + helper : false, + helper_w: 0, + data : false, + init_x : 0, + init_y : 0, + scroll_l: 0, + scroll_t: 0, + scroll_e: false, + scroll_i: false, + is_touch: false + }; + $(document).off("mousemove.vakata.jstree touchmove.vakata.jstree", $.vakata.dnd.drag); + $(document).off("mouseup.vakata.jstree touchend.vakata.jstree", $.vakata.dnd.stop); + }, + _scroll : function (init_only) { + if(!vakata_dnd.scroll_e || (!vakata_dnd.scroll_l && !vakata_dnd.scroll_t)) { + if(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; } + return false; + } + if(!vakata_dnd.scroll_i) { + vakata_dnd.scroll_i = setInterval($.vakata.dnd._scroll, 100); + return false; + } + if(init_only === true) { return false; } + + var i = vakata_dnd.scroll_e.scrollTop(), + j = vakata_dnd.scroll_e.scrollLeft(); + vakata_dnd.scroll_e.scrollTop(i + vakata_dnd.scroll_t * $.vakata.dnd.settings.scroll_speed); + vakata_dnd.scroll_e.scrollLeft(j + vakata_dnd.scroll_l * $.vakata.dnd.settings.scroll_speed); + if(i !== vakata_dnd.scroll_e.scrollTop() || j !== vakata_dnd.scroll_e.scrollLeft()) { + /** + * triggered on the document when a drag causes an element to scroll + * @event + * @plugin dnd + * @name dnd_scroll.vakata + * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start + * @param {DOM} element the DOM element being dragged + * @param {jQuery} helper the helper shown next to the mouse + * @param {jQuery} event the element that is scrolling + */ + $.vakata.dnd._trigger("scroll", vakata_dnd.scroll_e); + } + }, + start : function (e, data, html) { + if(e.type === "touchstart" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { + e.pageX = e.originalEvent.changedTouches[0].pageX; + e.pageY = e.originalEvent.changedTouches[0].pageY; + e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); + } + if(vakata_dnd.is_drag) { $.vakata.dnd.stop({}); } + try { + e.currentTarget.unselectable = "on"; + e.currentTarget.onselectstart = function() { return false; }; + if(e.currentTarget.style) { + e.currentTarget.style.touchAction = "none"; + e.currentTarget.style.msTouchAction = "none"; + e.currentTarget.style.MozUserSelect = "none"; + } + } catch(ignore) { } + vakata_dnd.init_x = e.pageX; + vakata_dnd.init_y = e.pageY; + vakata_dnd.data = data; + vakata_dnd.is_down = true; + vakata_dnd.element = e.currentTarget; + vakata_dnd.target = e.target; + vakata_dnd.is_touch = e.type === "touchstart"; + if(html !== false) { + vakata_dnd.helper = $("
      ").html(html).css({ + "display" : "block", + "margin" : "0", + "padding" : "0", + "position" : "absolute", + "top" : "-2000px", + "lineHeight" : "16px", + "zIndex" : "10000" + }); + } + $(document).on("mousemove.vakata.jstree touchmove.vakata.jstree", $.vakata.dnd.drag); + $(document).on("mouseup.vakata.jstree touchend.vakata.jstree", $.vakata.dnd.stop); + return false; + }, + drag : function (e) { + if(e.type === "touchmove" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { + e.pageX = e.originalEvent.changedTouches[0].pageX; + e.pageY = e.originalEvent.changedTouches[0].pageY; + e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); + } + if(!vakata_dnd.is_down) { return; } + if(!vakata_dnd.is_drag) { + if( + Math.abs(e.pageX - vakata_dnd.init_x) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) || + Math.abs(e.pageY - vakata_dnd.init_y) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) + ) { + if(vakata_dnd.helper) { + vakata_dnd.helper.appendTo("body"); + vakata_dnd.helper_w = vakata_dnd.helper.outerWidth(); + } + vakata_dnd.is_drag = true; + $(vakata_dnd.target).one('click.vakata', false); + /** + * triggered on the document when a drag starts + * @event + * @plugin dnd + * @name dnd_start.vakata + * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start + * @param {DOM} element the DOM element being dragged + * @param {jQuery} helper the helper shown next to the mouse + * @param {Object} event the event that caused the start (probably mousemove) + */ + $.vakata.dnd._trigger("start", e); + } + else { return; } + } + + var d = false, w = false, + dh = false, wh = false, + dw = false, ww = false, + dt = false, dl = false, + ht = false, hl = false; + + vakata_dnd.scroll_t = 0; + vakata_dnd.scroll_l = 0; + vakata_dnd.scroll_e = false; + $($(e.target).parentsUntil("body").addBack().get().reverse()) + .filter(function () { + return (/^auto|scroll$/).test($(this).css("overflow")) && + (this.scrollHeight > this.offsetHeight || this.scrollWidth > this.offsetWidth); + }) + .each(function () { + var t = $(this), o = t.offset(); + if(this.scrollHeight > this.offsetHeight) { + if(o.top + t.height() - e.pageY < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = 1; } + if(e.pageY - o.top < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = -1; } + } + if(this.scrollWidth > this.offsetWidth) { + if(o.left + t.width() - e.pageX < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = 1; } + if(e.pageX - o.left < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = -1; } + } + if(vakata_dnd.scroll_t || vakata_dnd.scroll_l) { + vakata_dnd.scroll_e = $(this); + return false; + } + }); + + if(!vakata_dnd.scroll_e) { + d = $(document); w = $(window); + dh = d.height(); wh = w.height(); + dw = d.width(); ww = w.width(); + dt = d.scrollTop(); dl = d.scrollLeft(); + if(dh > wh && e.pageY - dt < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = -1; } + if(dh > wh && wh - (e.pageY - dt) < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = 1; } + if(dw > ww && e.pageX - dl < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = -1; } + if(dw > ww && ww - (e.pageX - dl) < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = 1; } + if(vakata_dnd.scroll_t || vakata_dnd.scroll_l) { + vakata_dnd.scroll_e = d; + } + } + if(vakata_dnd.scroll_e) { $.vakata.dnd._scroll(true); } + + if(vakata_dnd.helper) { + ht = parseInt(e.pageY + $.vakata.dnd.settings.helper_top, 10); + hl = parseInt(e.pageX + $.vakata.dnd.settings.helper_left, 10); + if(dh && ht + 25 > dh) { ht = dh - 50; } + if(dw && hl + vakata_dnd.helper_w > dw) { hl = dw - (vakata_dnd.helper_w + 2); } + vakata_dnd.helper.css({ + left : hl + "px", + top : ht + "px" + }); + } + /** + * triggered on the document when a drag is in progress + * @event + * @plugin dnd + * @name dnd_move.vakata + * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start + * @param {DOM} element the DOM element being dragged + * @param {jQuery} helper the helper shown next to the mouse + * @param {Object} event the event that caused this to trigger (most likely mousemove) + */ + $.vakata.dnd._trigger("move", e); + return false; + }, + stop : function (e) { + if(e.type === "touchend" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { + e.pageX = e.originalEvent.changedTouches[0].pageX; + e.pageY = e.originalEvent.changedTouches[0].pageY; + e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); + } + if(vakata_dnd.is_drag) { + /** + * triggered on the document when a drag stops (the dragged element is dropped) + * @event + * @plugin dnd + * @name dnd_stop.vakata + * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start + * @param {DOM} element the DOM element being dragged + * @param {jQuery} helper the helper shown next to the mouse + * @param {Object} event the event that caused the stop + */ + if (e.target !== vakata_dnd.target) { + $(vakata_dnd.target).off('click.vakata'); + } + $.vakata.dnd._trigger("stop", e); + } + else { + if(e.type === "touchend" && e.target === vakata_dnd.target) { + var to = setTimeout(function () { $(e.target).click(); }, 100); + $(e.target).one('click', function() { if(to) { clearTimeout(to); } }); + } + } + $.vakata.dnd._clean(); + return false; + } + }; + }($)); + + // include the dnd plugin by default + // $.jstree.defaults.plugins.push("dnd"); + + +/** + * ### Massload plugin + * + * Adds massload functionality to jsTree, so that multiple nodes can be loaded in a single request (only useful with lazy loading). + */ + + /** + * massload configuration + * + * It is possible to set this to a standard jQuery-like AJAX config. + * In addition to the standard jQuery ajax options here you can supply functions for `data` and `url`, the functions will be run in the current instance's scope and a param will be passed indicating which node IDs need to be loaded, the return value of those functions will be used. + * + * You can also set this to a function, that function will receive the node IDs being loaded as argument and a second param which is a function (callback) which should be called with the result. + * + * Both the AJAX and the function approach rely on the same return value - an object where the keys are the node IDs, and the value is the children of that node as an array. + * + * { + * "id1" : [{ "text" : "Child of ID1", "id" : "c1" }, { "text" : "Another child of ID1", "id" : "c2" }], + * "id2" : [{ "text" : "Child of ID2", "id" : "c3" }] + * } + * + * @name $.jstree.defaults.massload + * @plugin massload + */ + $.jstree.defaults.massload = null; + $.jstree.plugins.massload = function (options, parent) { + this.init = function (el, options) { + this._data.massload = {}; + parent.init.call(this, el, options); + }; + this._load_nodes = function (nodes, callback, is_callback, force_reload) { + var s = this.settings.massload, + nodesString = JSON.stringify(nodes), + toLoad = [], + m = this._model.data, + i, j, dom; + if (!is_callback) { + for(i = 0, j = nodes.length; i < j; i++) { + if(!m[nodes[i]] || ( (!m[nodes[i]].state.loaded && !m[nodes[i]].state.failed) || force_reload) ) { + toLoad.push(nodes[i]); + dom = this.get_node(nodes[i], true); + if (dom && dom.length) { + dom.addClass("jstree-loading").attr('aria-busy',true); + } + } + } + this._data.massload = {}; + if (toLoad.length) { + if($.isFunction(s)) { + return s.call(this, toLoad, $.proxy(function (data) { + var i, j; + if(data) { + for(i in data) { + if(data.hasOwnProperty(i)) { + this._data.massload[i] = data[i]; + } + } + } + for(i = 0, j = nodes.length; i < j; i++) { + dom = this.get_node(nodes[i], true); + if (dom && dom.length) { + dom.removeClass("jstree-loading").attr('aria-busy',false); + } + } + parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); + }, this)); + } + if(typeof s === 'object' && s && s.url) { + s = $.extend(true, {}, s); + if($.isFunction(s.url)) { + s.url = s.url.call(this, toLoad); + } + if($.isFunction(s.data)) { + s.data = s.data.call(this, toLoad); + } + return $.ajax(s) + .done($.proxy(function (data,t,x) { + var i, j; + if(data) { + for(i in data) { + if(data.hasOwnProperty(i)) { + this._data.massload[i] = data[i]; + } + } + } + for(i = 0, j = nodes.length; i < j; i++) { + dom = this.get_node(nodes[i], true); + if (dom && dom.length) { + dom.removeClass("jstree-loading").attr('aria-busy',false); + } + } + parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); + }, this)) + .fail($.proxy(function (f) { + parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); + }, this)); + } + } + } + return parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); + }; + this._load_node = function (obj, callback) { + var data = this._data.massload[obj.id], + rslt = null, dom; + if(data) { + rslt = this[typeof data === 'string' ? '_append_html_data' : '_append_json_data']( + obj, + typeof data === 'string' ? $($.parseHTML(data)).filter(function () { return this.nodeType !== 3; }) : data, + function (status) { callback.call(this, status); } + ); + dom = this.get_node(obj.id, true); + if (dom && dom.length) { + dom.removeClass("jstree-loading").attr('aria-busy',false); + } + delete this._data.massload[obj.id]; + return rslt; + } + return parent._load_node.call(this, obj, callback); + }; + }; + +/** + * ### Search plugin + * + * Adds search functionality to jsTree. + */ + + /** + * stores all defaults for the search plugin + * @name $.jstree.defaults.search + * @plugin search + */ + $.jstree.defaults.search = { + /** + * a jQuery-like AJAX config, which jstree uses if a server should be queried for results. + * + * A `str` (which is the search string) parameter will be added with the request, an optional `inside` parameter will be added if the search is limited to a node id. The expected result is a JSON array with nodes that need to be opened so that matching nodes will be revealed. + * Leave this setting as `false` to not query the server. You can also set this to a function, which will be invoked in the instance's scope and receive 3 parameters - the search string, the callback to call with the array of nodes to load, and the optional node ID to limit the search to + * @name $.jstree.defaults.search.ajax + * @plugin search + */ + ajax : false, + /** + * Indicates if the search should be fuzzy or not (should `chnd3` match `child node 3`). Default is `false`. + * @name $.jstree.defaults.search.fuzzy + * @plugin search + */ + fuzzy : false, + /** + * Indicates if the search should be case sensitive. Default is `false`. + * @name $.jstree.defaults.search.case_sensitive + * @plugin search + */ + case_sensitive : false, + /** + * Indicates if the tree should be filtered (by default) to show only matching nodes (keep in mind this can be a heavy on large trees in old browsers). + * This setting can be changed at runtime when calling the search method. Default is `false`. + * @name $.jstree.defaults.search.show_only_matches + * @plugin search + */ + show_only_matches : false, + /** + * Indicates if the children of matched element are shown (when show_only_matches is true) + * This setting can be changed at runtime when calling the search method. Default is `false`. + * @name $.jstree.defaults.search.show_only_matches_children + * @plugin search + */ + show_only_matches_children : false, + /** + * Indicates if all nodes opened to reveal the search result, should be closed when the search is cleared or a new search is performed. Default is `true`. + * @name $.jstree.defaults.search.close_opened_onclear + * @plugin search + */ + close_opened_onclear : true, + /** + * Indicates if only leaf nodes should be included in search results. Default is `false`. + * @name $.jstree.defaults.search.search_leaves_only + * @plugin search + */ + search_leaves_only : false, + /** + * If set to a function it wil be called in the instance's scope with two arguments - search string and node (where node will be every node in the structure, so use with caution). + * If the function returns a truthy value the node will be considered a match (it might not be displayed if search_only_leaves is set to true and the node is not a leaf). Default is `false`. + * @name $.jstree.defaults.search.search_callback + * @plugin search + */ + search_callback : false + }; + + $.jstree.plugins.search = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + + this._data.search.str = ""; + this._data.search.dom = $(); + this._data.search.res = []; + this._data.search.opn = []; + this._data.search.som = false; + this._data.search.smc = false; + this._data.search.hdn = []; + + this.element + .on("search.jstree", $.proxy(function (e, data) { + if(this._data.search.som && data.res.length) { + var m = this._model.data, i, j, p = [], k, l; + for(i = 0, j = data.res.length; i < j; i++) { + if(m[data.res[i]] && !m[data.res[i]].state.hidden) { + p.push(data.res[i]); + p = p.concat(m[data.res[i]].parents); + if(this._data.search.smc) { + for (k = 0, l = m[data.res[i]].children_d.length; k < l; k++) { + if (m[m[data.res[i]].children_d[k]] && !m[m[data.res[i]].children_d[k]].state.hidden) { + p.push(m[data.res[i]].children_d[k]); + } + } + } + } + } + p = $.vakata.array_remove_item($.vakata.array_unique(p), $.jstree.root); + this._data.search.hdn = this.hide_all(true); + this.show_node(p, true); + this.redraw(true); + } + }, this)) + .on("clear_search.jstree", $.proxy(function (e, data) { + if(this._data.search.som && data.res.length) { + this.show_node(this._data.search.hdn, true); + this.redraw(true); + } + }, this)); + }; + /** + * used to search the tree nodes for a given string + * @name search(str [, skip_async]) + * @param {String} str the search string + * @param {Boolean} skip_async if set to true server will not be queried even if configured + * @param {Boolean} show_only_matches if set to true only matching nodes will be shown (keep in mind this can be very slow on large trees or old browsers) + * @param {mixed} inside an optional node to whose children to limit the search + * @param {Boolean} append if set to true the results of this search are appended to the previous search + * @plugin search + * @trigger search.jstree + */ + this.search = function (str, skip_async, show_only_matches, inside, append, show_only_matches_children) { + if(str === false || $.trim(str.toString()) === "") { + return this.clear_search(); + } + inside = this.get_node(inside); + inside = inside && inside.id ? inside.id : null; + str = str.toString(); + var s = this.settings.search, + a = s.ajax ? s.ajax : false, + m = this._model.data, + f = null, + r = [], + p = [], i, j; + if(this._data.search.res.length && !append) { + this.clear_search(); + } + if(show_only_matches === undefined) { + show_only_matches = s.show_only_matches; + } + if(show_only_matches_children === undefined) { + show_only_matches_children = s.show_only_matches_children; + } + if(!skip_async && a !== false) { + if($.isFunction(a)) { + return a.call(this, str, $.proxy(function (d) { + if(d && d.d) { d = d.d; } + this._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () { + this.search(str, true, show_only_matches, inside, append, show_only_matches_children); + }); + }, this), inside); + } + else { + a = $.extend({}, a); + if(!a.data) { a.data = {}; } + a.data.str = str; + if(inside) { + a.data.inside = inside; + } + if (this._data.search.lastRequest) { + this._data.search.lastRequest.abort(); + } + this._data.search.lastRequest = $.ajax(a) + .fail($.proxy(function () { + this._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'search', 'id' : 'search_01', 'reason' : 'Could not load search parents', 'data' : JSON.stringify(a) }; + this.settings.core.error.call(this, this._data.core.last_error); + }, this)) + .done($.proxy(function (d) { + if(d && d.d) { d = d.d; } + this._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () { + this.search(str, true, show_only_matches, inside, append, show_only_matches_children); + }); + }, this)); + return this._data.search.lastRequest; + } + } + if(!append) { + this._data.search.str = str; + this._data.search.dom = $(); + this._data.search.res = []; + this._data.search.opn = []; + this._data.search.som = show_only_matches; + this._data.search.smc = show_only_matches_children; + } + + f = new $.vakata.search(str, true, { caseSensitive : s.case_sensitive, fuzzy : s.fuzzy }); + $.each(m[inside ? inside : $.jstree.root].children_d, function (ii, i) { + var v = m[i]; + if(v.text && !v.state.hidden && (!s.search_leaves_only || (v.state.loaded && v.children.length === 0)) && ( (s.search_callback && s.search_callback.call(this, str, v)) || (!s.search_callback && f.search(v.text).isMatch) ) ) { + r.push(i); + p = p.concat(v.parents); + } + }); + if(r.length) { + p = $.vakata.array_unique(p); + for(i = 0, j = p.length; i < j; i++) { + if(p[i] !== $.jstree.root && m[p[i]] && this.open_node(p[i], null, 0) === true) { + this._data.search.opn.push(p[i]); + } + } + if(!append) { + this._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); }).join(', #'))); + this._data.search.res = r; + } + else { + this._data.search.dom = this._data.search.dom.add($(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); }).join(', #')))); + this._data.search.res = $.vakata.array_unique(this._data.search.res.concat(r)); + } + this._data.search.dom.children(".jstree-anchor").addClass('jstree-search'); + } + /** + * triggered after search is complete + * @event + * @name search.jstree + * @param {jQuery} nodes a jQuery collection of matching nodes + * @param {String} str the search string + * @param {Array} res a collection of objects represeing the matching nodes + * @plugin search + */ + this.trigger('search', { nodes : this._data.search.dom, str : str, res : this._data.search.res, show_only_matches : show_only_matches }); + }; + /** + * used to clear the last search (removes classes and shows all nodes if filtering is on) + * @name clear_search() + * @plugin search + * @trigger clear_search.jstree + */ + this.clear_search = function () { + if(this.settings.search.close_opened_onclear) { + this.close_node(this._data.search.opn, 0); + } + /** + * triggered after search is complete + * @event + * @name clear_search.jstree + * @param {jQuery} nodes a jQuery collection of matching nodes (the result from the last search) + * @param {String} str the search string (the last search string) + * @param {Array} res a collection of objects represeing the matching nodes (the result from the last search) + * @plugin search + */ + this.trigger('clear_search', { 'nodes' : this._data.search.dom, str : this._data.search.str, res : this._data.search.res }); + if(this._data.search.res.length) { + this._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(this._data.search.res, function (v) { + return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); + }).join(', #'))); + this._data.search.dom.children(".jstree-anchor").removeClass("jstree-search"); + } + this._data.search.str = ""; + this._data.search.res = []; + this._data.search.opn = []; + this._data.search.dom = $(); + }; + + this.redraw_node = function(obj, deep, callback, force_render) { + obj = parent.redraw_node.apply(this, arguments); + if(obj) { + if($.inArray(obj.id, this._data.search.res) !== -1) { + var i, j, tmp = null; + for(i = 0, j = obj.childNodes.length; i < j; i++) { + if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { + tmp = obj.childNodes[i]; + break; + } + } + if(tmp) { + tmp.className += ' jstree-search'; + } + } + } + return obj; + }; + }; + + // helpers + (function ($) { + // from http://kiro.me/projects/fuse.html + $.vakata.search = function(pattern, txt, options) { + options = options || {}; + options = $.extend({}, $.vakata.search.defaults, options); + if(options.fuzzy !== false) { + options.fuzzy = true; + } + pattern = options.caseSensitive ? pattern : pattern.toLowerCase(); + var MATCH_LOCATION = options.location, + MATCH_DISTANCE = options.distance, + MATCH_THRESHOLD = options.threshold, + patternLen = pattern.length, + matchmask, pattern_alphabet, match_bitapScore, search; + if(patternLen > 32) { + options.fuzzy = false; + } + if(options.fuzzy) { + matchmask = 1 << (patternLen - 1); + pattern_alphabet = (function () { + var mask = {}, + i = 0; + for (i = 0; i < patternLen; i++) { + mask[pattern.charAt(i)] = 0; + } + for (i = 0; i < patternLen; i++) { + mask[pattern.charAt(i)] |= 1 << (patternLen - i - 1); + } + return mask; + }()); + match_bitapScore = function (e, x) { + var accuracy = e / patternLen, + proximity = Math.abs(MATCH_LOCATION - x); + if(!MATCH_DISTANCE) { + return proximity ? 1.0 : accuracy; + } + return accuracy + (proximity / MATCH_DISTANCE); + }; + } + search = function (text) { + text = options.caseSensitive ? text : text.toLowerCase(); + if(pattern === text || text.indexOf(pattern) !== -1) { + return { + isMatch: true, + score: 0 + }; + } + if(!options.fuzzy) { + return { + isMatch: false, + score: 1 + }; + } + var i, j, + textLen = text.length, + scoreThreshold = MATCH_THRESHOLD, + bestLoc = text.indexOf(pattern, MATCH_LOCATION), + binMin, binMid, + binMax = patternLen + textLen, + lastRd, start, finish, rd, charMatch, + score = 1, + locations = []; + if (bestLoc !== -1) { + scoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold); + bestLoc = text.lastIndexOf(pattern, MATCH_LOCATION + patternLen); + if (bestLoc !== -1) { + scoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold); + } + } + bestLoc = -1; + for (i = 0; i < patternLen; i++) { + binMin = 0; + binMid = binMax; + while (binMin < binMid) { + if (match_bitapScore(i, MATCH_LOCATION + binMid) <= scoreThreshold) { + binMin = binMid; + } else { + binMax = binMid; + } + binMid = Math.floor((binMax - binMin) / 2 + binMin); + } + binMax = binMid; + start = Math.max(1, MATCH_LOCATION - binMid + 1); + finish = Math.min(MATCH_LOCATION + binMid, textLen) + patternLen; + rd = new Array(finish + 2); + rd[finish + 1] = (1 << i) - 1; + for (j = finish; j >= start; j--) { + charMatch = pattern_alphabet[text.charAt(j - 1)]; + if (i === 0) { + rd[j] = ((rd[j + 1] << 1) | 1) & charMatch; + } else { + rd[j] = ((rd[j + 1] << 1) | 1) & charMatch | (((lastRd[j + 1] | lastRd[j]) << 1) | 1) | lastRd[j + 1]; + } + if (rd[j] & matchmask) { + score = match_bitapScore(i, j - 1); + if (score <= scoreThreshold) { + scoreThreshold = score; + bestLoc = j - 1; + locations.push(bestLoc); + if (bestLoc > MATCH_LOCATION) { + start = Math.max(1, 2 * MATCH_LOCATION - bestLoc); + } else { + break; + } + } + } + } + if (match_bitapScore(i + 1, MATCH_LOCATION) > scoreThreshold) { + break; + } + lastRd = rd; + } + return { + isMatch: bestLoc >= 0, + score: score + }; + }; + return txt === true ? { 'search' : search } : search(txt); + }; + $.vakata.search.defaults = { + location : 0, + distance : 100, + threshold : 0.6, + fuzzy : false, + caseSensitive : false + }; + }($)); + + // include the search plugin by default + // $.jstree.defaults.plugins.push("search"); + + +/** + * ### Sort plugin + * + * Automatically sorts all siblings in the tree according to a sorting function. + */ + + /** + * the settings function used to sort the nodes. + * It is executed in the tree's context, accepts two nodes as arguments and should return `1` or `-1`. + * @name $.jstree.defaults.sort + * @plugin sort + */ + $.jstree.defaults.sort = function (a, b) { + //return this.get_type(a) === this.get_type(b) ? (this.get_text(a) > this.get_text(b) ? 1 : -1) : this.get_type(a) >= this.get_type(b); + return this.get_text(a) > this.get_text(b) ? 1 : -1; + }; + $.jstree.plugins.sort = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + this.element + .on("model.jstree", $.proxy(function (e, data) { + this.sort(data.parent, true); + }, this)) + .on("rename_node.jstree create_node.jstree", $.proxy(function (e, data) { + this.sort(data.parent || data.node.parent, false); + this.redraw_node(data.parent || data.node.parent, true); + }, this)) + .on("move_node.jstree copy_node.jstree", $.proxy(function (e, data) { + this.sort(data.parent, false); + this.redraw_node(data.parent, true); + }, this)); + }; + /** + * used to sort a node's children + * @private + * @name sort(obj [, deep]) + * @param {mixed} obj the node + * @param {Boolean} deep if set to `true` nodes are sorted recursively. + * @plugin sort + * @trigger search.jstree + */ + this.sort = function (obj, deep) { + var i, j; + obj = this.get_node(obj); + if(obj && obj.children && obj.children.length) { + obj.children.sort($.proxy(this.settings.sort, this)); + if(deep) { + for(i = 0, j = obj.children_d.length; i < j; i++) { + this.sort(obj.children_d[i], false); + } + } + } + }; + }; + + // include the sort plugin by default + // $.jstree.defaults.plugins.push("sort"); + +/** + * ### State plugin + * + * Saves the state of the tree (selected nodes, opened nodes) on the user's computer using available options (localStorage, cookies, etc) + */ + + var to = false; + /** + * stores all defaults for the state plugin + * @name $.jstree.defaults.state + * @plugin state + */ + $.jstree.defaults.state = { + /** + * A string for the key to use when saving the current tree (change if using multiple trees in your project). Defaults to `jstree`. + * @name $.jstree.defaults.state.key + * @plugin state + */ + key : 'jstree', + /** + * A space separated list of events that trigger a state save. Defaults to `changed.jstree open_node.jstree close_node.jstree`. + * @name $.jstree.defaults.state.events + * @plugin state + */ + events : 'changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree', + /** + * Time in milliseconds after which the state will expire. Defaults to 'false' meaning - no expire. + * @name $.jstree.defaults.state.ttl + * @plugin state + */ + ttl : false, + /** + * A function that will be executed prior to restoring state with one argument - the state object. Can be used to clear unwanted parts of the state. + * @name $.jstree.defaults.state.filter + * @plugin state + */ + filter : false + }; + $.jstree.plugins.state = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + var bind = $.proxy(function () { + this.element.on(this.settings.state.events, $.proxy(function () { + if(to) { clearTimeout(to); } + to = setTimeout($.proxy(function () { this.save_state(); }, this), 100); + }, this)); + /** + * triggered when the state plugin is finished restoring the state (and immediately after ready if there is no state to restore). + * @event + * @name state_ready.jstree + * @plugin state + */ + this.trigger('state_ready'); + }, this); + this.element + .on("ready.jstree", $.proxy(function (e, data) { + this.element.one("restore_state.jstree", bind); + if(!this.restore_state()) { bind(); } + }, this)); + }; + /** + * save the state + * @name save_state() + * @plugin state + */ + this.save_state = function () { + var st = { 'state' : this.get_state(), 'ttl' : this.settings.state.ttl, 'sec' : +(new Date()) }; + $.vakata.storage.set(this.settings.state.key, JSON.stringify(st)); + }; + /** + * restore the state from the user's computer + * @name restore_state() + * @plugin state + */ + this.restore_state = function () { + var k = $.vakata.storage.get(this.settings.state.key); + if(!!k) { try { k = JSON.parse(k); } catch(ex) { return false; } } + if(!!k && k.ttl && k.sec && +(new Date()) - k.sec > k.ttl) { return false; } + if(!!k && k.state) { k = k.state; } + if(!!k && $.isFunction(this.settings.state.filter)) { k = this.settings.state.filter.call(this, k); } + if(!!k) { + this.element.one("set_state.jstree", function (e, data) { data.instance.trigger('restore_state', { 'state' : $.extend(true, {}, k) }); }); + this.set_state(k); + return true; + } + return false; + }; + /** + * clear the state on the user's computer + * @name clear_state() + * @plugin state + */ + this.clear_state = function () { + return $.vakata.storage.del(this.settings.state.key); + }; + }; + + (function ($, undefined) { + $.vakata.storage = { + // simply specifying the functions in FF throws an error + set : function (key, val) { return window.localStorage.setItem(key, val); }, + get : function (key) { return window.localStorage.getItem(key); }, + del : function (key) { return window.localStorage.removeItem(key); } + }; + }($)); + + // include the state plugin by default + // $.jstree.defaults.plugins.push("state"); + +/** + * ### Types plugin + * + * Makes it possible to add predefined types for groups of nodes, which make it possible to easily control nesting rules and icon for each group. + */ + + /** + * An object storing all types as key value pairs, where the key is the type name and the value is an object that could contain following keys (all optional). + * + * * `max_children` the maximum number of immediate children this node type can have. Do not specify or set to `-1` for unlimited. + * * `max_depth` the maximum number of nesting this node type can have. A value of `1` would mean that the node can have children, but no grandchildren. Do not specify or set to `-1` for unlimited. + * * `valid_children` an array of node type strings, that nodes of this type can have as children. Do not specify or set to `-1` for no limits. + * * `icon` a string - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class. Omit to use the default icon from your theme. + * * `li_attr` an object of values which will be used to add HTML attributes on the resulting LI DOM node (merged with the node's own data) + * * `a_attr` an object of values which will be used to add HTML attributes on the resulting A DOM node (merged with the node's own data) + * + * There are two predefined types: + * + * * `#` represents the root of the tree, for example `max_children` would control the maximum number of root nodes. + * * `default` represents the default node - any settings here will be applied to all nodes that do not have a type specified. + * + * @name $.jstree.defaults.types + * @plugin types + */ + $.jstree.defaults.types = { + 'default' : {} + }; + $.jstree.defaults.types[$.jstree.root] = {}; + + $.jstree.plugins.types = function (options, parent) { + this.init = function (el, options) { + var i, j; + if(options && options.types && options.types['default']) { + for(i in options.types) { + if(i !== "default" && i !== $.jstree.root && options.types.hasOwnProperty(i)) { + for(j in options.types['default']) { + if(options.types['default'].hasOwnProperty(j) && options.types[i][j] === undefined) { + options.types[i][j] = options.types['default'][j]; + } + } + } + } + } + parent.init.call(this, el, options); + this._model.data[$.jstree.root].type = $.jstree.root; + }; + this.refresh = function (skip_loading, forget_state) { + parent.refresh.call(this, skip_loading, forget_state); + this._model.data[$.jstree.root].type = $.jstree.root; + }; + this.bind = function () { + this.element + .on('model.jstree', $.proxy(function (e, data) { + var m = this._model.data, + dpc = data.nodes, + t = this.settings.types, + i, j, c = 'default', k; + for(i = 0, j = dpc.length; i < j; i++) { + c = 'default'; + if(m[dpc[i]].original && m[dpc[i]].original.type && t[m[dpc[i]].original.type]) { + c = m[dpc[i]].original.type; + } + if(m[dpc[i]].data && m[dpc[i]].data.jstree && m[dpc[i]].data.jstree.type && t[m[dpc[i]].data.jstree.type]) { + c = m[dpc[i]].data.jstree.type; + } + m[dpc[i]].type = c; + if(m[dpc[i]].icon === true && t[c].icon !== undefined) { + m[dpc[i]].icon = t[c].icon; + } + if(t[c].li_attr !== undefined && typeof t[c].li_attr === 'object') { + for (k in t[c].li_attr) { + if (t[c].li_attr.hasOwnProperty(k)) { + if (k === 'id') { + continue; + } + else if (m[dpc[i]].li_attr[k] === undefined) { + m[dpc[i]].li_attr[k] = t[c].li_attr[k]; + } + else if (k === 'class') { + m[dpc[i]].li_attr['class'] = t[c].li_attr['class'] + ' ' + m[dpc[i]].li_attr['class']; + } + } + } + } + if(t[c].a_attr !== undefined && typeof t[c].a_attr === 'object') { + for (k in t[c].a_attr) { + if (t[c].a_attr.hasOwnProperty(k)) { + if (k === 'id') { + continue; + } + else if (m[dpc[i]].a_attr[k] === undefined) { + m[dpc[i]].a_attr[k] = t[c].a_attr[k]; + } + else if (k === 'href' && m[dpc[i]].a_attr[k] === '#') { + m[dpc[i]].a_attr['href'] = t[c].a_attr['href']; + } + else if (k === 'class') { + m[dpc[i]].a_attr['class'] = t[c].a_attr['class'] + ' ' + m[dpc[i]].a_attr['class']; + } + } + } + } + } + m[$.jstree.root].type = $.jstree.root; + }, this)); + parent.bind.call(this); + }; + this.get_json = function (obj, options, flat) { + var i, j, + m = this._model.data, + opt = options ? $.extend(true, {}, options, {no_id:false}) : {}, + tmp = parent.get_json.call(this, obj, opt, flat); + if(tmp === false) { return false; } + if($.isArray(tmp)) { + for(i = 0, j = tmp.length; i < j; i++) { + tmp[i].type = tmp[i].id && m[tmp[i].id] && m[tmp[i].id].type ? m[tmp[i].id].type : "default"; + if(options && options.no_id) { + delete tmp[i].id; + if(tmp[i].li_attr && tmp[i].li_attr.id) { + delete tmp[i].li_attr.id; + } + if(tmp[i].a_attr && tmp[i].a_attr.id) { + delete tmp[i].a_attr.id; + } + } + } + } + else { + tmp.type = tmp.id && m[tmp.id] && m[tmp.id].type ? m[tmp.id].type : "default"; + if(options && options.no_id) { + tmp = this._delete_ids(tmp); + } + } + return tmp; + }; + this._delete_ids = function (tmp) { + if($.isArray(tmp)) { + for(var i = 0, j = tmp.length; i < j; i++) { + tmp[i] = this._delete_ids(tmp[i]); + } + return tmp; + } + delete tmp.id; + if(tmp.li_attr && tmp.li_attr.id) { + delete tmp.li_attr.id; + } + if(tmp.a_attr && tmp.a_attr.id) { + delete tmp.a_attr.id; + } + if(tmp.children && $.isArray(tmp.children)) { + tmp.children = this._delete_ids(tmp.children); + } + return tmp; + }; + this.check = function (chk, obj, par, pos, more) { + if(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; } + obj = obj && obj.id ? obj : this.get_node(obj); + par = par && par.id ? par : this.get_node(par); + var m = obj && obj.id ? (more && more.origin ? more.origin : $.jstree.reference(obj.id)) : null, tmp, d, i, j; + m = m && m._model && m._model.data ? m._model.data : null; + switch(chk) { + case "create_node": + case "move_node": + case "copy_node": + if(chk !== 'move_node' || $.inArray(obj.id, par.children) === -1) { + tmp = this.get_rules(par); + if(tmp.max_children !== undefined && tmp.max_children !== -1 && tmp.max_children === par.children.length) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_01', 'reason' : 'max_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + return false; + } + if(tmp.valid_children !== undefined && tmp.valid_children !== -1 && $.inArray((obj.type || 'default'), tmp.valid_children) === -1) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_02', 'reason' : 'valid_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + return false; + } + if(m && obj.children_d && obj.parents) { + d = 0; + for(i = 0, j = obj.children_d.length; i < j; i++) { + d = Math.max(d, m[obj.children_d[i]].parents.length); + } + d = d - obj.parents.length + 1; + } + if(d <= 0 || d === undefined) { d = 1; } + do { + if(tmp.max_depth !== undefined && tmp.max_depth !== -1 && tmp.max_depth < d) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_03', 'reason' : 'max_depth prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + return false; + } + par = this.get_node(par.parent); + tmp = this.get_rules(par); + d++; + } while(par); + } + break; + } + return true; + }; + /** + * used to retrieve the type settings object for a node + * @name get_rules(obj) + * @param {mixed} obj the node to find the rules for + * @return {Object} + * @plugin types + */ + this.get_rules = function (obj) { + obj = this.get_node(obj); + if(!obj) { return false; } + var tmp = this.get_type(obj, true); + if(tmp.max_depth === undefined) { tmp.max_depth = -1; } + if(tmp.max_children === undefined) { tmp.max_children = -1; } + if(tmp.valid_children === undefined) { tmp.valid_children = -1; } + return tmp; + }; + /** + * used to retrieve the type string or settings object for a node + * @name get_type(obj [, rules]) + * @param {mixed} obj the node to find the rules for + * @param {Boolean} rules if set to `true` instead of a string the settings object will be returned + * @return {String|Object} + * @plugin types + */ + this.get_type = function (obj, rules) { + obj = this.get_node(obj); + return (!obj) ? false : ( rules ? $.extend({ 'type' : obj.type }, this.settings.types[obj.type]) : obj.type); + }; + /** + * used to change a node's type + * @name set_type(obj, type) + * @param {mixed} obj the node to change + * @param {String} type the new type + * @plugin types + */ + this.set_type = function (obj, type) { + var m = this._model.data, t, t1, t2, old_type, old_icon, k, d, a; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.set_type(obj[t1], type); + } + return true; + } + t = this.settings.types; + obj = this.get_node(obj); + if(!t[type] || !obj) { return false; } + d = this.get_node(obj, true); + if (d && d.length) { + a = d.children('.jstree-anchor'); + } + old_type = obj.type; + old_icon = this.get_icon(obj); + obj.type = type; + if(old_icon === true || !t[old_type] || (t[old_type].icon !== undefined && old_icon === t[old_type].icon)) { + this.set_icon(obj, t[type].icon !== undefined ? t[type].icon : true); + } + + // remove old type props + if(t[old_type] && t[old_type].li_attr !== undefined && typeof t[old_type].li_attr === 'object') { + for (k in t[old_type].li_attr) { + if (t[old_type].li_attr.hasOwnProperty(k)) { + if (k === 'id') { + continue; + } + else if (k === 'class') { + m[obj.id].li_attr['class'] = (m[obj.id].li_attr['class'] || '').replace(t[old_type].li_attr[k], ''); + if (d) { d.removeClass(t[old_type].li_attr[k]); } + } + else if (m[obj.id].li_attr[k] === t[old_type].li_attr[k]) { + m[obj.id].li_attr[k] = null; + if (d) { d.removeAttr(k); } + } + } + } + } + if(t[old_type] && t[old_type].a_attr !== undefined && typeof t[old_type].a_attr === 'object') { + for (k in t[old_type].a_attr) { + if (t[old_type].a_attr.hasOwnProperty(k)) { + if (k === 'id') { + continue; + } + else if (k === 'class') { + m[obj.id].a_attr['class'] = (m[obj.id].a_attr['class'] || '').replace(t[old_type].a_attr[k], ''); + if (a) { a.removeClass(t[old_type].a_attr[k]); } + } + else if (m[obj.id].a_attr[k] === t[old_type].a_attr[k]) { + if (k === 'href') { + m[obj.id].a_attr[k] = '#'; + if (a) { a.attr('href', '#'); } + } + else { + delete m[obj.id].a_attr[k]; + if (a) { a.removeAttr(k); } + } + } + } + } + } + + // add new props + if(t[type].li_attr !== undefined && typeof t[type].li_attr === 'object') { + for (k in t[type].li_attr) { + if (t[type].li_attr.hasOwnProperty(k)) { + if (k === 'id') { + continue; + } + else if (m[obj.id].li_attr[k] === undefined) { + m[obj.id].li_attr[k] = t[type].li_attr[k]; + if (d) { + if (k === 'class') { + d.addClass(t[type].li_attr[k]); + } + else { + d.attr(k, t[type].li_attr[k]); + } + } + } + else if (k === 'class') { + m[obj.id].li_attr['class'] = t[type].li_attr[k] + ' ' + m[obj.id].li_attr['class']; + if (d) { d.addClass(t[type].li_attr[k]); } + } + } + } + } + if(t[type].a_attr !== undefined && typeof t[type].a_attr === 'object') { + for (k in t[type].a_attr) { + if (t[type].a_attr.hasOwnProperty(k)) { + if (k === 'id') { + continue; + } + else if (m[obj.id].a_attr[k] === undefined) { + m[obj.id].a_attr[k] = t[type].a_attr[k]; + if (a) { + if (k === 'class') { + a.addClass(t[type].a_attr[k]); + } + else { + a.attr(k, t[type].a_attr[k]); + } + } + } + else if (k === 'href' && m[obj.id].a_attr[k] === '#') { + m[obj.id].a_attr['href'] = t[type].a_attr['href']; + if (a) { a.attr('href', t[type].a_attr['href']); } + } + else if (k === 'class') { + m[obj.id].a_attr['class'] = t[type].a_attr['class'] + ' ' + m[obj.id].a_attr['class']; + if (a) { a.addClass(t[type].a_attr[k]); } + } + } + } + } + + return true; + }; + }; + // include the types plugin by default + // $.jstree.defaults.plugins.push("types"); + + +/** + * ### Unique plugin + * + * Enforces that no nodes with the same name can coexist as siblings. + */ + + /** + * stores all defaults for the unique plugin + * @name $.jstree.defaults.unique + * @plugin unique + */ + $.jstree.defaults.unique = { + /** + * Indicates if the comparison should be case sensitive. Default is `false`. + * @name $.jstree.defaults.unique.case_sensitive + * @plugin unique + */ + case_sensitive : false, + /** + * A callback executed in the instance's scope when a new node is created and the name is already taken, the two arguments are the conflicting name and the counter. The default will produce results like `New node (2)`. + * @name $.jstree.defaults.unique.duplicate + * @plugin unique + */ + duplicate : function (name, counter) { + return name + ' (' + counter + ')'; + } + }; + + $.jstree.plugins.unique = function (options, parent) { + this.check = function (chk, obj, par, pos, more) { + if(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; } + obj = obj && obj.id ? obj : this.get_node(obj); + par = par && par.id ? par : this.get_node(par); + if(!par || !par.children) { return true; } + var n = chk === "rename_node" ? pos : obj.text, + c = [], + s = this.settings.unique.case_sensitive, + m = this._model.data, i, j; + for(i = 0, j = par.children.length; i < j; i++) { + c.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase()); + } + if(!s) { n = n.toLowerCase(); } + switch(chk) { + case "delete_node": + return true; + case "rename_node": + i = ($.inArray(n, c) === -1 || (obj.text && obj.text[ s ? 'toString' : 'toLowerCase']() === n)); + if(!i) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_01', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + } + return i; + case "create_node": + i = ($.inArray(n, c) === -1); + if(!i) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_04', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + } + return i; + case "copy_node": + i = ($.inArray(n, c) === -1); + if(!i) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_02', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + } + return i; + case "move_node": + i = ( (obj.parent === par.id && (!more || !more.is_multi)) || $.inArray(n, c) === -1); + if(!i) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_03', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + } + return i; + } + return true; + }; + this.create_node = function (par, node, pos, callback, is_loaded) { + if(!node || node.text === undefined) { + if(par === null) { + par = $.jstree.root; + } + par = this.get_node(par); + if(!par) { + return parent.create_node.call(this, par, node, pos, callback, is_loaded); + } + pos = pos === undefined ? "last" : pos; + if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { + return parent.create_node.call(this, par, node, pos, callback, is_loaded); + } + if(!node) { node = {}; } + var tmp, n, dpc, i, j, m = this._model.data, s = this.settings.unique.case_sensitive, cb = this.settings.unique.duplicate; + n = tmp = this.get_string('New node'); + dpc = []; + for(i = 0, j = par.children.length; i < j; i++) { + dpc.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase()); + } + i = 1; + while($.inArray(s ? n : n.toLowerCase(), dpc) !== -1) { + n = cb.call(this, tmp, (++i)).toString(); + } + node.text = n; + } + return parent.create_node.call(this, par, node, pos, callback, is_loaded); + }; + }; + + // include the unique plugin by default + // $.jstree.defaults.plugins.push("unique"); + + +/** + * ### Wholerow plugin + * + * Makes each node appear block level. Making selection easier. May cause slow down for large trees in old browsers. + */ + + var div = document.createElement('DIV'); + div.setAttribute('unselectable','on'); + div.setAttribute('role','presentation'); + div.className = 'jstree-wholerow'; + div.innerHTML = ' '; + $.jstree.plugins.wholerow = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + + this.element + .on('ready.jstree set_state.jstree', $.proxy(function () { + this.hide_dots(); + }, this)) + .on("init.jstree loading.jstree ready.jstree", $.proxy(function () { + //div.style.height = this._data.core.li_height + 'px'; + this.get_container_ul().addClass('jstree-wholerow-ul'); + }, this)) + .on("deselect_all.jstree", $.proxy(function (e, data) { + this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked'); + }, this)) + .on("changed.jstree", $.proxy(function (e, data) { + this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked'); + var tmp = false, i, j; + for(i = 0, j = data.selected.length; i < j; i++) { + tmp = this.get_node(data.selected[i], true); + if(tmp && tmp.length) { + tmp.children('.jstree-wholerow').addClass('jstree-wholerow-clicked'); + } + } + }, this)) + .on("open_node.jstree", $.proxy(function (e, data) { + this.get_node(data.node, true).find('.jstree-clicked').parent().children('.jstree-wholerow').addClass('jstree-wholerow-clicked'); + }, this)) + .on("hover_node.jstree dehover_node.jstree", $.proxy(function (e, data) { + if(e.type === "hover_node" && this.is_disabled(data.node)) { return; } + this.get_node(data.node, true).children('.jstree-wholerow')[e.type === "hover_node"?"addClass":"removeClass"]('jstree-wholerow-hovered'); + }, this)) + .on("contextmenu.jstree", ".jstree-wholerow", $.proxy(function (e) { + if (this._data.contextmenu) { + e.preventDefault(); + var tmp = $.Event('contextmenu', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey, pageX : e.pageX, pageY : e.pageY }); + $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp); + } + }, this)) + /*! + .on("mousedown.jstree touchstart.jstree", ".jstree-wholerow", function (e) { + if(e.target === e.currentTarget) { + var a = $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor"); + e.target = a[0]; + a.trigger(e); + } + }) + */ + .on("click.jstree", ".jstree-wholerow", function (e) { + e.stopImmediatePropagation(); + var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); + $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); + }) + .on("dblclick.jstree", ".jstree-wholerow", function (e) { + e.stopImmediatePropagation(); + var tmp = $.Event('dblclick', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); + $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); + }) + .on("click.jstree", ".jstree-leaf > .jstree-ocl", $.proxy(function (e) { + e.stopImmediatePropagation(); + var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); + $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); + }, this)) + .on("mouseover.jstree", ".jstree-wholerow, .jstree-icon", $.proxy(function (e) { + e.stopImmediatePropagation(); + if(!this.is_disabled(e.currentTarget)) { + this.hover_node(e.currentTarget); + } + return false; + }, this)) + .on("mouseleave.jstree", ".jstree-node", $.proxy(function (e) { + this.dehover_node(e.currentTarget); + }, this)); + }; + this.teardown = function () { + if(this.settings.wholerow) { + this.element.find(".jstree-wholerow").remove(); + } + parent.teardown.call(this); + }; + this.redraw_node = function(obj, deep, callback, force_render) { + obj = parent.redraw_node.apply(this, arguments); + if(obj) { + var tmp = div.cloneNode(true); + //tmp.style.height = this._data.core.li_height + 'px'; + if($.inArray(obj.id, this._data.core.selected) !== -1) { tmp.className += ' jstree-wholerow-clicked'; } + if(this._data.core.focused && this._data.core.focused === obj.id) { tmp.className += ' jstree-wholerow-hovered'; } + obj.insertBefore(tmp, obj.childNodes[0]); + } + return obj; + }; + }; + // include the wholerow plugin by default + // $.jstree.defaults.plugins.push("wholerow"); + if(document.registerElement && Object && Object.create) { + var proto = Object.create(HTMLElement.prototype); + proto.createdCallback = function () { + var c = { core : {}, plugins : [] }, i; + for(i in $.jstree.plugins) { + if($.jstree.plugins.hasOwnProperty(i) && this.attributes[i]) { + c.plugins.push(i); + if(this.getAttribute(i) && JSON.parse(this.getAttribute(i))) { + c[i] = JSON.parse(this.getAttribute(i)); + } + } + } + for(i in $.jstree.defaults.core) { + if($.jstree.defaults.core.hasOwnProperty(i) && this.attributes[i]) { + c.core[i] = JSON.parse(this.getAttribute(i)) || this.getAttribute(i); + } + } + $(this).jstree(c); + }; + // proto.attributeChangedCallback = function (name, previous, value) { }; + try { + document.registerElement("vakata-jstree", { prototype: proto }); + } catch(ignore) { } + } + +})); \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/jstree.min.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/jstree.min.js new file mode 100644 index 0000000000..24c420489e --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/jstree.min.js @@ -0,0 +1,6 @@ +/*! jsTree - v3.3.3 - 2016-10-31 - (MIT) */ +!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a,b){"use strict";if(!a.jstree){var c=0,d=!1,e=!1,f=!1,g=[],h=a("script:last").attr("src"),i=window.document;a.jstree={version:"3.3.3",defaults:{plugins:[]},plugins:{},path:h&&-1!==h.indexOf("/")?h.replace(/\/[^\/]+$/,""):"",idregex:/[\\:&!^|()\[\]<>@*'+~#";.,=\- \/${}%?`]/g,root:"#"},a.jstree.create=function(b,d){var e=new a.jstree.core(++c),f=d;return d=a.extend(!0,{},a.jstree.defaults,d),f&&f.plugins&&(d.plugins=f.plugins),a.each(d.plugins,function(a,b){"core"!==a&&(e=e.plugin(b,d[b]))}),a(b).data("jstree",e),e.init(b,d),e},a.jstree.destroy=function(){a(".jstree:jstree").jstree("destroy"),a(i).off(".jstree")},a.jstree.core=function(a){this._id=a,this._cnt=0,this._wrk=null,this._data={core:{themes:{name:!1,dots:!1,icons:!1,ellipsis:!1},selected:[],last_error:{},working:!1,worker_queue:[],focused:null}}},a.jstree.reference=function(b){var c=null,d=null;if(!b||!b.id||b.tagName&&b.nodeType||(b=b.id),!d||!d.length)try{d=a(b)}catch(e){}if(!d||!d.length)try{d=a("#"+b.replace(a.jstree.idregex,"\\$&"))}catch(e){}return d&&d.length&&(d=d.closest(".jstree")).length&&(d=d.data("jstree"))?c=d:a(".jstree").each(function(){var d=a(this).data("jstree");return d&&d._model.data[b]?(c=d,!1):void 0}),c},a.fn.jstree=function(c){var d="string"==typeof c,e=Array.prototype.slice.call(arguments,1),f=null;return c!==!0||this.length?(this.each(function(){var g=a.jstree.reference(this),h=d&&g?g[c]:null;return f=d&&h?h.apply(g,e):null,g||d||c!==b&&!a.isPlainObject(c)||a.jstree.create(this,c),(g&&!d||c===!0)&&(f=g||!1),null!==f&&f!==b?!1:void 0}),null!==f&&f!==b?f:this):!1},a.expr.pseudos.jstree=a.expr.createPseudo(function(c){return function(c){return a(c).hasClass("jstree")&&a(c).data("jstree")!==b}}),a.jstree.defaults.core={data:!1,strings:!1,check_callback:!1,error:a.noop,animation:200,multiple:!0,themes:{name:!1,url:!1,dir:!1,dots:!0,icons:!0,ellipsis:!1,stripes:!1,variant:!1,responsive:!1},expand_selected_onload:!0,worker:!0,force_text:!1,dblclick_toggle:!0},a.jstree.core.prototype={plugin:function(b,c){var d=a.jstree.plugins[b];return d?(this._data[b]={},d.prototype=this,new d(c,this)):this},init:function(b,c){this._model={data:{},changed:[],force_full_redraw:!1,redraw_timeout:!1,default_state:{loaded:!0,opened:!1,selected:!1,disabled:!1}},this._model.data[a.jstree.root]={id:a.jstree.root,parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}},this.element=a(b).addClass("jstree jstree-"+this._id),this.settings=c,this._data.core.ready=!1,this._data.core.loaded=!1,this._data.core.rtl="rtl"===this.element.css("direction"),this.element[this._data.core.rtl?"addClass":"removeClass"]("jstree-rtl"),this.element.attr("role","tree"),this.settings.core.multiple&&this.element.attr("aria-multiselectable",!0),this.element.attr("tabindex")||this.element.attr("tabindex","0"),this.bind(),this.trigger("init"),this._data.core.original_container_html=this.element.find(" > ul > li").clone(!0),this._data.core.original_container_html.find("li").addBack().contents().filter(function(){return 3===this.nodeType&&(!this.nodeValue||/^\s+$/.test(this.nodeValue))}).remove(),this.element.html(""),this.element.attr("aria-activedescendant","j"+this._id+"_loading"),this._data.core.li_height=this.get_container_ul().children("li").first().height()||24,this._data.core.node=this._create_prototype_node(),this.trigger("loading"),this.load_node(a.jstree.root)},destroy:function(a){if(this._wrk)try{window.URL.revokeObjectURL(this._wrk),this._wrk=null}catch(b){}a||this.element.empty(),this.teardown()},_create_prototype_node:function(){var a=i.createElement("LI"),b,c;return a.setAttribute("role","treeitem"),b=i.createElement("I"),b.className="jstree-icon jstree-ocl",b.setAttribute("role","presentation"),a.appendChild(b),b=i.createElement("A"),b.className="jstree-anchor",b.setAttribute("href","#"),b.setAttribute("tabindex","-1"),c=i.createElement("I"),c.className="jstree-icon jstree-themeicon",c.setAttribute("role","presentation"),b.appendChild(c),a.appendChild(b),b=c=null,a},teardown:function(){this.unbind(),this.element.removeClass("jstree").removeData("jstree").find("[class^='jstree']").addBack().attr("class",function(){return this.className.replace(/jstree[^ ]*|$/gi,"")}),this.element=null},bind:function(){var b="",c=null,d=0;this.element.on("dblclick.jstree",function(a){if(a.target.tagName&&"input"===a.target.tagName.toLowerCase())return!0;if(i.selection&&i.selection.empty)i.selection.empty();else if(window.getSelection){var b=window.getSelection();try{b.removeAllRanges(),b.collapse()}catch(c){}}}).on("mousedown.jstree",a.proxy(function(a){a.target===this.element[0]&&(a.preventDefault(),d=+new Date)},this)).on("mousedown.jstree",".jstree-ocl",function(a){a.preventDefault()}).on("click.jstree",".jstree-ocl",a.proxy(function(a){this.toggle_node(a.target)},this)).on("dblclick.jstree",".jstree-anchor",a.proxy(function(a){return a.target.tagName&&"input"===a.target.tagName.toLowerCase()?!0:void(this.settings.core.dblclick_toggle&&this.toggle_node(a.target))},this)).on("click.jstree",".jstree-anchor",a.proxy(function(b){b.preventDefault(),b.currentTarget!==i.activeElement&&a(b.currentTarget).focus(),this.activate_node(b.currentTarget,b)},this)).on("keydown.jstree",".jstree-anchor",a.proxy(function(b){if(b.target.tagName&&"input"===b.target.tagName.toLowerCase())return!0;if(32!==b.which&&13!==b.which&&(b.shiftKey||b.ctrlKey||b.altKey||b.metaKey))return!0;var c=null;switch(this._data.core.rtl&&(37===b.which?b.which=39:39===b.which&&(b.which=37)),b.which){case 32:b.ctrlKey&&(b.type="click",a(b.currentTarget).trigger(b));break;case 13:b.type="click",a(b.currentTarget).trigger(b);break;case 37:b.preventDefault(),this.is_open(b.currentTarget)?this.close_node(b.currentTarget):(c=this.get_parent(b.currentTarget),c&&c.id!==a.jstree.root&&this.get_node(c,!0).children(".jstree-anchor").focus());break;case 38:b.preventDefault(),c=this.get_prev_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 39:b.preventDefault(),this.is_closed(b.currentTarget)?this.open_node(b.currentTarget,function(a){this.get_node(a,!0).children(".jstree-anchor").focus()}):this.is_open(b.currentTarget)&&(c=this.get_node(b.currentTarget,!0).children(".jstree-children")[0],c&&a(this._firstChild(c)).children(".jstree-anchor").focus());break;case 40:b.preventDefault(),c=this.get_next_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 106:this.open_all();break;case 36:b.preventDefault(),c=this._firstChild(this.get_container_ul()[0]),c&&a(c).children(".jstree-anchor").filter(":visible").focus();break;case 35:b.preventDefault(),this.element.find(".jstree-anchor").filter(":visible").last().focus();break;case 113:b.preventDefault(),this.edit(b.currentTarget)}},this)).on("load_node.jstree",a.proxy(function(b,c){c.status&&(c.node.id!==a.jstree.root||this._data.core.loaded||(this._data.core.loaded=!0,this._firstChild(this.get_container_ul()[0])&&this.element.attr("aria-activedescendant",this._firstChild(this.get_container_ul()[0]).id),this.trigger("loaded")),this._data.core.ready||setTimeout(a.proxy(function(){if(this.element&&!this.get_container_ul().find(".jstree-loading").length){if(this._data.core.ready=!0,this._data.core.selected.length){if(this.settings.core.expand_selected_onload){var b=[],c,d;for(c=0,d=this._data.core.selected.length;d>c;c++)b=b.concat(this._model.data[this._data.core.selected[c]].parents);for(b=a.vakata.array_unique(b),c=0,d=b.length;d>c;c++)this.open_node(b[c],!1,0)}this.trigger("changed",{action:"ready",selected:this._data.core.selected})}this.trigger("ready")}},this),0))},this)).on("keypress.jstree",a.proxy(function(d){if(d.target.tagName&&"input"===d.target.tagName.toLowerCase())return!0;c&&clearTimeout(c),c=setTimeout(function(){b=""},500);var e=String.fromCharCode(d.which).toLowerCase(),f=this.element.find(".jstree-anchor").filter(":visible"),g=f.index(i.activeElement)||0,h=!1;if(b+=e,b.length>1){if(f.slice(g).each(a.proxy(function(c,d){return 0===a(d).text().toLowerCase().indexOf(b)?(a(d).focus(),h=!0,!1):void 0},this)),h)return;if(f.slice(0,g).each(a.proxy(function(c,d){return 0===a(d).text().toLowerCase().indexOf(b)?(a(d).focus(),h=!0,!1):void 0},this)),h)return}if(new RegExp("^"+e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")+"+$").test(b)){if(f.slice(g+1).each(a.proxy(function(b,c){return a(c).text().toLowerCase().charAt(0)===e?(a(c).focus(),h=!0,!1):void 0},this)),h)return;if(f.slice(0,g+1).each(a.proxy(function(b,c){return a(c).text().toLowerCase().charAt(0)===e?(a(c).focus(),h=!0,!1):void 0},this)),h)return}},this)).on("init.jstree",a.proxy(function(){var a=this.settings.core.themes;this._data.core.themes.dots=a.dots,this._data.core.themes.stripes=a.stripes,this._data.core.themes.icons=a.icons,this._data.core.themes.ellipsis=a.ellipsis,this.set_theme(a.name||"default",a.url),this.set_theme_variant(a.variant)},this)).on("loading.jstree",a.proxy(function(){this[this._data.core.themes.dots?"show_dots":"hide_dots"](),this[this._data.core.themes.icons?"show_icons":"hide_icons"](),this[this._data.core.themes.stripes?"show_stripes":"hide_stripes"](),this[this._data.core.themes.ellipsis?"show_ellipsis":"hide_ellipsis"]()},this)).on("blur.jstree",".jstree-anchor",a.proxy(function(b){this._data.core.focused=null,a(b.currentTarget).filter(".jstree-hovered").mouseleave(),this.element.attr("tabindex","0")},this)).on("focus.jstree",".jstree-anchor",a.proxy(function(b){var c=this.get_node(b.currentTarget);c&&c.id&&(this._data.core.focused=c.id),this.element.find(".jstree-hovered").not(b.currentTarget).mouseleave(),a(b.currentTarget).mouseenter(),this.element.attr("tabindex","-1")},this)).on("focus.jstree",a.proxy(function(){if(+new Date-d>500&&!this._data.core.focused){d=0;var a=this.get_node(this.element.attr("aria-activedescendant"),!0);a&&a.find("> .jstree-anchor").focus()}},this)).on("mouseenter.jstree",".jstree-anchor",a.proxy(function(a){this.hover_node(a.currentTarget)},this)).on("mouseleave.jstree",".jstree-anchor",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},unbind:function(){this.element.off(".jstree"),a(i).off(".jstree-"+this._id)},trigger:function(a,b){b||(b={}),b.instance=this,this.element.triggerHandler(a.replace(".jstree","")+".jstree",b)},get_container:function(){return this.element},get_container_ul:function(){return this.element.children(".jstree-children").first()},get_string:function(b){var c=this.settings.core.strings;return a.isFunction(c)?c.call(this,b):c&&c[b]?c[b]:b},_firstChild:function(a){a=a?a.firstChild:null;while(null!==a&&1!==a.nodeType)a=a.nextSibling;return a},_nextSibling:function(a){a=a?a.nextSibling:null;while(null!==a&&1!==a.nodeType)a=a.nextSibling;return a},_previousSibling:function(a){a=a?a.previousSibling:null;while(null!==a&&1!==a.nodeType)a=a.previousSibling;return a},get_node:function(b,c){b&&b.id&&(b=b.id);var d;try{if(this._model.data[b])b=this._model.data[b];else if("string"==typeof b&&this._model.data[b.replace(/^#/,"")])b=this._model.data[b.replace(/^#/,"")];else if("string"==typeof b&&(d=a("#"+b.replace(a.jstree.idregex,"\\$&"),this.element)).length&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else if((d=a(b,this.element)).length&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else{if(!(d=a(b,this.element)).length||!d.hasClass("jstree"))return!1;b=this._model.data[a.jstree.root]}return c&&(b=b.id===a.jstree.root?this.element:a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)),b}catch(e){return!1}},get_path:function(b,c,d){if(b=b.parents?b:this.get_node(b),!b||b.id===a.jstree.root||!b.parents)return!1;var e,f,g=[];for(g.push(d?b.id:b.text),e=0,f=b.parents.length;f>e;e++)g.push(d?b.parents[e]:this.get_text(b.parents[e]));return g=g.reverse().slice(1),c?g.join(c):g},get_next_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0]){d=this._firstChild(this.get_container_ul()[0]);while(d&&0===d.offsetHeight)d=this._nextSibling(d);return d?a(d):!1}if(!b||!b.length)return!1;if(c){d=b[0];do d=this._nextSibling(d);while(d&&0===d.offsetHeight);return d?a(d):!1}if(b.hasClass("jstree-open")){d=this._firstChild(b.children(".jstree-children")[0]);while(d&&0===d.offsetHeight)d=this._nextSibling(d);if(null!==d)return a(d)}d=b[0];do d=this._nextSibling(d);while(d&&0===d.offsetHeight);return null!==d?a(d):b.parentsUntil(".jstree",".jstree-node").nextAll(".jstree-node:visible").first()},get_prev_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0]){d=this.get_container_ul()[0].lastChild;while(d&&0===d.offsetHeight)d=this._previousSibling(d);return d?a(d):!1}if(!b||!b.length)return!1;if(c){d=b[0];do d=this._previousSibling(d);while(d&&0===d.offsetHeight);return d?a(d):!1}d=b[0];do d=this._previousSibling(d);while(d&&0===d.offsetHeight);if(null!==d){b=a(d);while(b.hasClass("jstree-open"))b=b.children(".jstree-children").first().children(".jstree-node:visible:last");return b}return d=b[0].parentNode.parentNode,d&&d.className&&-1!==d.className.indexOf("jstree-node")?a(d):!1},get_parent:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.parent:!1},get_children_dom:function(a){return a=this.get_node(a,!0),a[0]===this.element[0]?this.get_container_ul().children(".jstree-node"):a&&a.length?a.children(".jstree-children").children(".jstree-node"):!1},is_parent:function(a){return a=this.get_node(a),a&&(a.state.loaded===!1||a.children.length>0)},is_loaded:function(a){return a=this.get_node(a),a&&a.state.loaded},is_loading:function(a){return a=this.get_node(a),a&&a.state&&a.state.loading},is_open:function(a){return a=this.get_node(a),a&&a.state.opened},is_closed:function(a){return a=this.get_node(a),a&&this.is_parent(a)&&!a.state.opened},is_leaf:function(a){return!this.is_parent(a)},load_node:function(b,c){var d,e,f,g,h;if(a.isArray(b))return this._load_nodes(b.slice(),c),!0;if(b=this.get_node(b),!b)return c&&c.call(this,b,!1),!1;if(b.state.loaded){for(b.state.loaded=!1,f=0,g=b.parents.length;g>f;f++)this._model.data[b.parents[f]].children_d=a.vakata.array_filter(this._model.data[b.parents[f]].children_d,function(c){return-1===a.inArray(c,b.children_d)});for(d=0,e=b.children_d.length;e>d;d++)this._model.data[b.children_d[d]].state.selected&&(h=!0),delete this._model.data[b.children_d[d]];h&&(this._data.core.selected=a.vakata.array_filter(this._data.core.selected,function(c){return-1===a.inArray(c,b.children_d)})),b.children=[],b.children_d=[],h&&this.trigger("changed",{action:"load_node",node:b,selected:this._data.core.selected})}return b.state.failed=!1,b.state.loading=!0,this.get_node(b,!0).addClass("jstree-loading").attr("aria-busy",!0),this._load_node(b,a.proxy(function(a){b=this._model.data[b.id],b.state.loading=!1,b.state.loaded=a,b.state.failed=!b.state.loaded;var d=this.get_node(b,!0),e=0,f=0,g=this._model.data,h=!1;for(e=0,f=b.children.length;f>e;e++)if(g[b.children[e]]&&!g[b.children[e]].state.hidden){h=!0;break}b.state.loaded&&d&&d.length&&(d.removeClass("jstree-closed jstree-open jstree-leaf"),h?"#"!==b.id&&d.addClass(b.state.opened?"jstree-open":"jstree-closed"):d.addClass("jstree-leaf")),d.removeClass("jstree-loading").attr("aria-busy",!1),this.trigger("load_node",{node:b,status:a}),c&&c.call(this,b,a)},this)),!0},_load_nodes:function(a,b,c,d){var e=!0,f=function(){this._load_nodes(a,b,!0)},g=this._model.data,h,i,j=[];for(h=0,i=a.length;i>h;h++)g[a[h]]&&(!g[a[h]].state.loaded&&!g[a[h]].state.failed||!c&&d)&&(this.is_loading(a[h])||this.load_node(a[h],f),e=!1);if(e){for(h=0,i=a.length;i>h;h++)g[a[h]]&&g[a[h]].state.loaded&&j.push(a[h]);b&&!b.done&&(b.call(this,j),b.done=!0)}},load_all:function(b,c){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var d=[],e=this._model.data,f=e[b.id].children_d,g,h;for(b.state&&!b.state.loaded&&d.push(b.id),g=0,h=f.length;h>g;g++)e[f[g]]&&e[f[g]].state&&!e[f[g]].state.loaded&&d.push(f[g]);d.length?this._load_nodes(d,function(){this.load_all(b,c)}):(c&&c.call(this,b),this.trigger("load_all",{node:b}))},_load_node:function(b,c){var d=this.settings.core.data,e,f=function g(){return 3!==this.nodeType&&8!==this.nodeType};return d?a.isFunction(d)?d.call(this,b,a.proxy(function(d){d===!1?c.call(this,!1):this["string"==typeof d?"_append_html_data":"_append_json_data"](b,"string"==typeof d?a(a.parseHTML(d)).filter(f):d,function(a){c.call(this,a)})},this)):"object"==typeof d?d.url?(d=a.extend(!0,{},d),a.isFunction(d.url)&&(d.url=d.url.call(this,b)),a.isFunction(d.data)&&(d.data=d.data.call(this,b)),a.ajax(d).done(a.proxy(function(d,e,g){var h=g.getResponseHeader("Content-Type");return h&&-1!==h.indexOf("json")||"object"==typeof d?this._append_json_data(b,d,function(a){c.call(this,a)}):h&&-1!==h.indexOf("html")||"string"==typeof d?this._append_html_data(b,a(a.parseHTML(d)).filter(f),function(a){c.call(this,a)}):(this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:g})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))},this)).fail(a.proxy(function(a){c.call(this,!1),this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:a})},this.settings.core.error.call(this,this._data.core.last_error)},this))):(e=a.isArray(d)||a.isPlainObject(d)?JSON.parse(JSON.stringify(d)):d,b.id===a.jstree.root?this._append_json_data(b,e,function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_05",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))):"string"==typeof d?b.id===a.jstree.root?this._append_html_data(b,a(a.parseHTML(d)).filter(f),function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_06",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1)):c.call(this,!1):b.id===a.jstree.root?this._append_html_data(b,this._data.core.original_container_html.clone(!0),function(a){c.call(this,a)}):c.call(this,!1)},_node_changed:function(a){a=this.get_node(a),a&&this._model.changed.push(a.id)},_append_html_data:function(b,c,d){b=this.get_node(b),b.children=[],b.children_d=[];var e=c.is("ul")?c.children():c,f=b.id,g=[],h=[],i=this._model.data,j=i[f],k=this._data.core.selected.length,l,m,n;for(e.each(a.proxy(function(b,c){l=this._parse_model_from_html(a(c),f,j.parents.concat()),l&&(g.push(l),h.push(l),i[l].children_d.length&&(h=h.concat(i[l].children_d)))},this)),j.children=g,j.children_d=h,m=0,n=j.parents.length;n>m;m++)i[j.parents[m]].children_d=i[j.parents[m]].children_d.concat(h);this.trigger("model",{nodes:h,parent:f}),f!==a.jstree.root?(this._node_changed(f),this.redraw()):(this.get_container_ul().children(".jstree-initial-node").remove(),this.redraw(!0)),this._data.core.selected.length!==k&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)},_append_json_data:function(b,c,d,e){if(null!==this.element){b=this.get_node(b),b.children=[],b.children_d=[],c.d&&(c=c.d,"string"==typeof c&&(c=JSON.parse(c))),a.isArray(c)||(c=[c]);var f=null,g={df:this._model.default_state,dat:c,par:b.id,m:this._model.data,t_id:this._id,t_cnt:this._cnt,sel:this._data.core.selected},h=function(a,b){a.data&&(a=a.data);var c=a.dat,d=a.par,e=[],f=[],g=[],h=a.df,i=a.t_id,j=a.t_cnt,k=a.m,l=k[d],m=a.sel,n,o,p,q,r=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=a.id.toString(),f,i,j,l,m={id:e,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in h)h.hasOwnProperty(f)&&(m.state[f]=h[f]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(m.icon=a.data.jstree.icon),(m.icon===b||null===m.icon||""===m.icon)&&(m.icon=!0),a&&a.data&&(m.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(m.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(m.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(m.li_attr[f]=a.li_attr[f]);if(m.li_attr.id||(m.li_attr.id=e),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(m.a_attr[f]=a.a_attr[f]);for(a&&a.children&&a.children===!0&&(m.state.loaded=!1,m.children=[],m.children_d=[]),k[m.id]=m,f=0,i=m.children.length;i>f;f++)j=r(k[m.children[f]],m.id,d),l=k[j],m.children_d.push(j),l.children_d.length&&(m.children_d=m.children_d.concat(l.children_d));return delete a.data,delete a.children,k[m.id].original=a,m.state.selected&&g.push(m.id),m.id},s=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=!1,f,l,m,n,o;do e="j"+i+"_"+ ++j;while(k[e]);o={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in h)h.hasOwnProperty(f)&&(o.state[f]=h[f]);if(a&&a.id&&(o.id=a.id.toString()),a&&a.text&&(o.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(o.icon=a.data.jstree.icon),(o.icon===b||null===o.icon||""===o.icon)&&(o.icon=!0),a&&a.data&&(o.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(o.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(o.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(o.li_attr[f]=a.li_attr[f]);if(o.li_attr.id&&!o.id&&(o.id=o.li_attr.id.toString()),o.id||(o.id=e),o.li_attr.id||(o.li_attr.id=o.id),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(o.a_attr[f]=a.a_attr[f]);if(a&&a.children&&a.children.length){for(f=0,l=a.children.length;l>f;f++)m=s(a.children[f],o.id,d),n=k[m],o.children.push(m),n.children_d.length&&(o.children_d=o.children_d.concat(n.children_d));o.children_d=o.children_d.concat(o.children)}return a&&a.children&&a.children===!0&&(o.state.loaded=!1,o.children=[],o.children_d=[]),delete a.data,delete a.children,o.original=a,k[o.id]=o,o.state.selected&&g.push(o.id),o.id};if(c.length&&c[0].id!==b&&c[0].parent!==b){for(o=0,p=c.length;p>o;o++)c[o].children||(c[o].children=[]),k[c[o].id.toString()]=c[o];for(o=0,p=c.length;p>o;o++)k[c[o].parent.toString()].children.push(c[o].id.toString()),l.children_d.push(c[o].id.toString());for(o=0,p=l.children.length;p>o;o++)n=r(k[l.children[o]],d,l.parents.concat()),f.push(n),k[n].children_d.length&&(f=f.concat(k[n].children_d));for(o=0,p=l.parents.length;p>o;o++)k[l.parents[o]].children_d=k[l.parents[o]].children_d.concat(f);q={cnt:j,mod:k,sel:m,par:d,dpc:f,add:g}}else{for(o=0,p=c.length;p>o;o++)n=s(c[o],d,l.parents.concat()),n&&(e.push(n),f.push(n),k[n].children_d.length&&(f=f.concat(k[n].children_d)));for(l.children=e,l.children_d=f,o=0,p=l.parents.length;p>o;o++)k[l.parents[o]].children_d=k[l.parents[o]].children_d.concat(f);q={cnt:j,mod:k,sel:m,par:d,dpc:f,add:g}}return"undefined"!=typeof window&&"undefined"!=typeof window.document?q:void postMessage(q)},i=function(b,c){if(null!==this.element){this._cnt=b.cnt;var e,f=this._model.data;for(e in f)f.hasOwnProperty(e)&&f[e].state&&f[e].state.loading&&b.mod[e]&&(b.mod[e].state.loading=!0);if(this._model.data=b.mod,c){var g,h=b.add,i=b.sel,j=this._data.core.selected.slice();if(f=this._model.data,i.length!==j.length||a.vakata.array_unique(i.concat(j)).length!==i.length){for(e=0,g=i.length;g>e;e++)-1===a.inArray(i[e],h)&&-1===a.inArray(i[e],j)&&(f[i[e]].state.selected=!1);for(e=0,g=j.length;g>e;e++)-1===a.inArray(j[e],i)&&(f[j[e]].state.selected=!0)}}b.add.length&&(this._data.core.selected=this._data.core.selected.concat(b.add)),this.trigger("model",{nodes:b.dpc,parent:b.par}),b.par!==a.jstree.root?(this._node_changed(b.par),this.redraw()):this.redraw(!0),b.add.length&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)}};if(this.settings.core.worker&&window.Blob&&window.URL&&window.Worker)try{null===this._wrk&&(this._wrk=window.URL.createObjectURL(new window.Blob(["self.onmessage = "+h.toString()],{type:"text/javascript"}))),!this._data.core.working||e?(this._data.core.working=!0,f=new window.Worker(this._wrk),f.onmessage=a.proxy(function(a){i.call(this,a.data,!0);try{f.terminate(),f=null}catch(b){}this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1},this),g.par?f.postMessage(g):this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1):this._data.core.worker_queue.push([b,c,d,!0])}catch(j){i.call(this,h(g),!1),this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1}else i.call(this,h(g),!1)}},_parse_model_from_html:function(c,d,e){e=e?[].concat(e):[],d&&e.unshift(d);var f,g,h=this._model.data,i={id:!1,text:!1,icon:!0,parent:d,parents:e,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1},j,k,l;for(j in this._model.default_state)this._model.default_state.hasOwnProperty(j)&&(i.state[j]=this._model.default_state[j]);if(k=a.vakata.attributes(c,!0),a.each(k,function(b,c){return c=a.trim(c),c.length?(i.li_attr[b]=c,void("id"===b&&(i.id=c.toString()))):!0}),k=c.children("a").first(),k.length&&(k=a.vakata.attributes(k,!0),a.each(k,function(b,c){c=a.trim(c),c.length&&(i.a_attr[b]=c)})),k=c.children("a").first().length?c.children("a").first().clone():c.clone(),k.children("ins, i, ul").remove(),k=k.html(),k=a("
      ").html(k),i.text=this.settings.core.force_text?k.text():k.html(),k=c.data(),i.data=k?a.extend(!0,{},k):null,i.state.opened=c.hasClass("jstree-open"),i.state.selected=c.children("a").hasClass("jstree-clicked"),i.state.disabled=c.children("a").hasClass("jstree-disabled"),i.data&&i.data.jstree)for(j in i.data.jstree)i.data.jstree.hasOwnProperty(j)&&(i.state[j]=i.data.jstree[j]);k=c.children("a").children(".jstree-themeicon"),k.length&&(i.icon=k.hasClass("jstree-themeicon-hidden")?!1:k.attr("rel")),i.state.icon!==b&&(i.icon=i.state.icon),(i.icon===b||null===i.icon||""===i.icon)&&(i.icon=!0),k=c.children("ul").children("li");do l="j"+this._id+"_"+ ++this._cnt;while(h[l]);return i.id=i.li_attr.id?i.li_attr.id.toString():l,k.length?(k.each(a.proxy(function(b,c){f=this._parse_model_from_html(a(c),i.id,e),g=this._model.data[f],i.children.push(f),g.children_d.length&&(i.children_d=i.children_d.concat(g.children_d))},this)),i.children_d=i.children_d.concat(i.children)):c.hasClass("jstree-closed")&&(i.state.loaded=!1),i.li_attr["class"]&&(i.li_attr["class"]=i.li_attr["class"].replace("jstree-closed","").replace("jstree-open","")),i.a_attr["class"]&&(i.a_attr["class"]=i.a_attr["class"].replace("jstree-clicked","").replace("jstree-disabled","")),h[i.id]=i,i.state.selected&&this._data.core.selected.push(i.id),i.id},_parse_model_from_flat_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=a.id.toString(),f=this._model.data,g=this._model.default_state,h,i,j,k,l={id:e,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(h in g)g.hasOwnProperty(h)&&(l.state[h]=g[h]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),(l.icon===b||null===l.icon||""===l.icon)&&(l.icon=!0),a&&a.data&&(l.data=a.data,a.data.jstree))for(h in a.data.jstree)a.data.jstree.hasOwnProperty(h)&&(l.state[h]=a.data.jstree[h]);if(a&&"object"==typeof a.state)for(h in a.state)a.state.hasOwnProperty(h)&&(l.state[h]=a.state[h]);if(a&&"object"==typeof a.li_attr)for(h in a.li_attr)a.li_attr.hasOwnProperty(h)&&(l.li_attr[h]=a.li_attr[h]);if(l.li_attr.id||(l.li_attr.id=e),a&&"object"==typeof a.a_attr)for(h in a.a_attr)a.a_attr.hasOwnProperty(h)&&(l.a_attr[h]=a.a_attr[h]);for(a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),f[l.id]=l,h=0,i=l.children.length;i>h;h++)j=this._parse_model_from_flat_json(f[l.children[h]],l.id,d),k=f[j],l.children_d.push(j),k.children_d.length&&(l.children_d=l.children_d.concat(k.children_d));return delete a.data,delete a.children,f[l.id].original=a,l.state.selected&&this._data.core.selected.push(l.id),l.id},_parse_model_from_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=!1,f,g,h,i,j=this._model.data,k=this._model.default_state,l;do e="j"+this._id+"_"+ ++this._cnt;while(j[e]);l={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in k)k.hasOwnProperty(f)&&(l.state[f]=k[f]);if(a&&a.id&&(l.id=a.id.toString()),a&&a.text&&(l.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),(l.icon===b||null===l.icon||""===l.icon)&&(l.icon=!0),a&&a.data&&(l.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(l.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(l.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(l.li_attr[f]=a.li_attr[f]);if(l.li_attr.id&&!l.id&&(l.id=l.li_attr.id.toString()),l.id||(l.id=e),l.li_attr.id||(l.li_attr.id=l.id),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(l.a_attr[f]=a.a_attr[f]);if(a&&a.children&&a.children.length){for(f=0,g=a.children.length;g>f;f++)h=this._parse_model_from_json(a.children[f],l.id,d),i=j[h],l.children.push(h),i.children_d.length&&(l.children_d=l.children_d.concat(i.children_d));l.children_d=l.children_d.concat(l.children)}return a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),delete a.data,delete a.children,l.original=a,j[l.id]=l,l.state.selected&&this._data.core.selected.push(l.id),l.id},_redraw:function(){var b=this._model.force_full_redraw?this._model.data[a.jstree.root].children.concat([]):this._model.changed.concat([]),c=i.createElement("UL"),d,e,f,g=this._data.core.focused;for(e=0,f=b.length;f>e;e++)d=this.redraw_node(b[e],!0,this._model.force_full_redraw),d&&this._model.force_full_redraw&&c.appendChild(d);this._model.force_full_redraw&&(c.className=this.get_container_ul()[0].className,c.setAttribute("role","group"),this.element.empty().append(c)),null!==g&&(d=this.get_node(g,!0),d&&d.length&&d.children(".jstree-anchor")[0]!==i.activeElement?d.children(".jstree-anchor").focus():this._data.core.focused=null),this._model.force_full_redraw=!1,this._model.changed=[],this.trigger("redraw",{nodes:b})},redraw:function(a){a&&(this._model.force_full_redraw=!0),this._redraw()},draw_children:function(b){var c=this.get_node(b),d=!1,e=!1,f=!1,g=i;if(!c)return!1;if(c.id===a.jstree.root)return this.redraw(!0);if(b=this.get_node(b,!0),!b||!b.length)return!1;if(b.children(".jstree-children").remove(),b=b[0],c.children.length&&c.state.loaded){for(f=g.createElement("UL"),f.setAttribute("role","group"),f.className="jstree-children",d=0,e=c.children.length;e>d;d++)f.appendChild(this.redraw_node(c.children[d],!0,!0));b.appendChild(f)}},redraw_node:function(b,c,d,e){var f=this.get_node(b),g=!1,h=!1,j=!1,k=!1,l=!1,m=!1,n="",o=i,p=this._model.data,q=!1,r=!1,s=null,t=0,u=0,v=!1,w=!1; +if(!f)return!1;if(f.id===a.jstree.root)return this.redraw(!0);if(c=c||0===f.children.length,b=i.querySelector?this.element[0].querySelector("#"+(-1!=="0123456789".indexOf(f.id[0])?"\\3"+f.id[0]+" "+f.id.substr(1).replace(a.jstree.idregex,"\\$&"):f.id.replace(a.jstree.idregex,"\\$&"))):i.getElementById(f.id))b=a(b),d||(g=b.parent().parent()[0],g===this.element[0]&&(g=null),h=b.index()),c||!f.children.length||b.children(".jstree-children").length||(c=!0),c||(j=b.children(".jstree-children")[0]),q=b.children(".jstree-anchor")[0]===i.activeElement,b.remove();else if(c=!0,!d){if(g=f.parent!==a.jstree.root?a("#"+f.parent.replace(a.jstree.idregex,"\\$&"),this.element)[0]:null,!(null===g||g&&p[f.parent].state.opened))return!1;h=a.inArray(f.id,null===g?p[a.jstree.root].children:p[f.parent].children)}b=this._data.core.node.cloneNode(!0),n="jstree-node ";for(k in f.li_attr)if(f.li_attr.hasOwnProperty(k)){if("id"===k)continue;"class"!==k?b.setAttribute(k,f.li_attr[k]):n+=f.li_attr[k]}for(f.a_attr.id||(f.a_attr.id=f.id+"_anchor"),b.setAttribute("aria-selected",!!f.state.selected),b.setAttribute("aria-level",f.parents.length),b.setAttribute("aria-labelledby",f.a_attr.id),f.state.disabled&&b.setAttribute("aria-disabled",!0),k=0,l=f.children.length;l>k;k++)if(!p[f.children[k]].state.hidden){v=!0;break}if(null!==f.parent&&p[f.parent]&&!f.state.hidden&&(k=a.inArray(f.id,p[f.parent].children),w=f.id,-1!==k))for(k++,l=p[f.parent].children.length;l>k;k++)if(p[p[f.parent].children[k]].state.hidden||(w=p[f.parent].children[k]),w!==f.id)break;f.state.hidden&&(n+=" jstree-hidden"),f.state.loaded&&!v?n+=" jstree-leaf":(n+=f.state.opened&&f.state.loaded?" jstree-open":" jstree-closed",b.setAttribute("aria-expanded",f.state.opened&&f.state.loaded)),w===f.id&&(n+=" jstree-last"),b.id=f.id,b.className=n,n=(f.state.selected?" jstree-clicked":"")+(f.state.disabled?" jstree-disabled":"");for(l in f.a_attr)if(f.a_attr.hasOwnProperty(l)){if("href"===l&&"#"===f.a_attr[l])continue;"class"!==l?b.childNodes[1].setAttribute(l,f.a_attr[l]):n+=" "+f.a_attr[l]}if(n.length&&(b.childNodes[1].className="jstree-anchor "+n),(f.icon&&f.icon!==!0||f.icon===!1)&&(f.icon===!1?b.childNodes[1].childNodes[0].className+=" jstree-themeicon-hidden":-1===f.icon.indexOf("/")&&-1===f.icon.indexOf(".")?b.childNodes[1].childNodes[0].className+=" "+f.icon+" jstree-themeicon-custom":(b.childNodes[1].childNodes[0].style.backgroundImage='url("'+f.icon+'")',b.childNodes[1].childNodes[0].style.backgroundPosition="center center",b.childNodes[1].childNodes[0].style.backgroundSize="auto",b.childNodes[1].childNodes[0].className+=" jstree-themeicon-custom")),this.settings.core.force_text?b.childNodes[1].appendChild(o.createTextNode(f.text)):b.childNodes[1].innerHTML+=f.text,c&&f.children.length&&(f.state.opened||e)&&f.state.loaded){for(m=o.createElement("UL"),m.setAttribute("role","group"),m.className="jstree-children",k=0,l=f.children.length;l>k;k++)m.appendChild(this.redraw_node(f.children[k],c,!0));b.appendChild(m)}if(j&&b.appendChild(j),!d){for(g||(g=this.element[0]),k=0,l=g.childNodes.length;l>k;k++)if(g.childNodes[k]&&g.childNodes[k].className&&-1!==g.childNodes[k].className.indexOf("jstree-children")){s=g.childNodes[k];break}s||(s=o.createElement("UL"),s.setAttribute("role","group"),s.className="jstree-children",g.appendChild(s)),g=s,hf;f++)this.open_node(c[f],d,e);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?(e=e===b?this.settings.core.animation:e,this.is_closed(c)?this.is_loaded(c)?(h=this.get_node(c,!0),i=this,h.length&&(e&&h.children(".jstree-children").length&&h.children(".jstree-children").stop(!0,!0),c.children.length&&!this._firstChild(h.children(".jstree-children")[0])&&this.draw_children(c),e?(this.trigger("before_open",{node:c}),h.children(".jstree-children").css("display","none").end().removeClass("jstree-closed").addClass("jstree-open").attr("aria-expanded",!0).children(".jstree-children").stop(!0,!0).slideDown(e,function(){this.style.display="",i.element&&i.trigger("after_open",{node:c})})):(this.trigger("before_open",{node:c}),h[0].className=h[0].className.replace("jstree-closed","jstree-open"),h[0].setAttribute("aria-expanded",!0))),c.state.opened=!0,d&&d.call(this,c,!0),h.length||this.trigger("before_open",{node:c}),this.trigger("open_node",{node:c}),e&&h.length||this.trigger("after_open",{node:c}),!0):this.is_loading(c)?setTimeout(a.proxy(function(){this.open_node(c,d,e)},this),500):void this.load_node(c,function(a,b){return b?this.open_node(a,d,e):d?d.call(this,a,!1):!1}):(d&&d.call(this,c,!1),!1)):!1},_open_to:function(b){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var c,d,e=b.parents;for(c=0,d=e.length;d>c;c+=1)c!==a.jstree.root&&this.open_node(e[c],!1,0);return a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)},close_node:function(c,d){var e,f,g,h;if(a.isArray(c)){for(c=c.slice(),e=0,f=c.length;f>e;e++)this.close_node(c[e],d);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?this.is_closed(c)?!1:(d=d===b?this.settings.core.animation:d,g=this,h=this.get_node(c,!0),c.state.opened=!1,this.trigger("close_node",{node:c}),void(h.length?d?h.children(".jstree-children").attr("style","display:block !important").end().removeClass("jstree-open").addClass("jstree-closed").attr("aria-expanded",!1).children(".jstree-children").stop(!0,!0).slideUp(d,function(){this.style.display="",h.children(".jstree-children").remove(),g.element&&g.trigger("after_close",{node:c})}):(h[0].className=h[0].className.replace("jstree-open","jstree-closed"),h.attr("aria-expanded",!1).children(".jstree-children").remove(),this.trigger("after_close",{node:c})):this.trigger("after_close",{node:c}))):!1},toggle_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.toggle_node(b[c]);return!0}return this.is_closed(b)?this.open_node(b):this.is_open(b)?this.close_node(b):void 0},open_all:function(b,c,d){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var e=b.id===a.jstree.root?this.get_container_ul():this.get_node(b,!0),f,g,h;if(!e.length){for(f=0,g=b.children_d.length;g>f;f++)this.is_closed(this._model.data[b.children_d[f]])&&(this._model.data[b.children_d[f]].state.opened=!0);return this.trigger("open_all",{node:b})}d=d||e,h=this,e=this.is_closed(b)?e.find(".jstree-closed").addBack():e.find(".jstree-closed"),e.each(function(){h.open_node(this,function(a,b){b&&this.is_parent(a)&&this.open_all(a,c,d)},c||0)}),0===d.find(".jstree-closed").length&&this.trigger("open_all",{node:this.get_node(d)})},close_all:function(b,c){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var d=b.id===a.jstree.root?this.get_container_ul():this.get_node(b,!0),e=this,f,g;for(d.length&&(d=this.is_open(b)?d.find(".jstree-open").addBack():d.find(".jstree-open"),a(d.get().reverse()).each(function(){e.close_node(this,c||0)})),f=0,g=b.children_d.length;g>f;f++)this._model.data[b.children_d[f]].state.opened=!1;this.trigger("close_all",{node:b})},is_disabled:function(a){return a=this.get_node(a),a&&a.state&&a.state.disabled},enable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.enable_node(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.state.disabled=!1,this.get_node(b,!0).children(".jstree-anchor").removeClass("jstree-disabled").attr("aria-disabled",!1),void this.trigger("enable_node",{node:b})):!1},disable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.disable_node(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.state.disabled=!0,this.get_node(b,!0).children(".jstree-anchor").addClass("jstree-disabled").attr("aria-disabled",!0),void this.trigger("disable_node",{node:b})):!1},is_hidden:function(a){return a=this.get_node(a),a.state.hidden===!0},hide_node:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.hide_node(b[d],!0);return c||this.redraw(),!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?void(b.state.hidden||(b.state.hidden=!0,this._node_changed(b.parent),c||this.redraw(),this.trigger("hide_node",{node:b}))):!1},show_node:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.show_node(b[d],!0);return c||this.redraw(),!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?void(b.state.hidden&&(b.state.hidden=!1,this._node_changed(b.parent),c||this.redraw(),this.trigger("show_node",{node:b}))):!1},hide_all:function(b){var c,d=this._model.data,e=[];for(c in d)d.hasOwnProperty(c)&&c!==a.jstree.root&&!d[c].state.hidden&&(d[c].state.hidden=!0,e.push(c));return this._model.force_full_redraw=!0,b||this.redraw(),this.trigger("hide_all",{nodes:e}),e},show_all:function(b){var c,d=this._model.data,e=[];for(c in d)d.hasOwnProperty(c)&&c!==a.jstree.root&&d[c].state.hidden&&(d[c].state.hidden=!1,e.push(c));return this._model.force_full_redraw=!0,b||this.redraw(),this.trigger("show_all",{nodes:e}),e},activate_node:function(a,c){if(this.is_disabled(a))return!1;if(c&&"object"==typeof c||(c={}),this._data.core.last_clicked=this._data.core.last_clicked&&this._data.core.last_clicked.id!==b?this.get_node(this._data.core.last_clicked.id):null,this._data.core.last_clicked&&!this._data.core.last_clicked.state.selected&&(this._data.core.last_clicked=null),!this._data.core.last_clicked&&this._data.core.selected.length&&(this._data.core.last_clicked=this.get_node(this._data.core.selected[this._data.core.selected.length-1])),this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&(!c.shiftKey||this._data.core.last_clicked&&this.get_parent(a)&&this.get_parent(a)===this._data.core.last_clicked.parent))if(c.shiftKey){var d=this.get_node(a).id,e=this._data.core.last_clicked.id,f=this.get_node(this._data.core.last_clicked.parent).children,g=!1,h,i;for(h=0,i=f.length;i>h;h+=1)f[h]===d&&(g=!g),f[h]===e&&(g=!g),this.is_disabled(f[h])||!g&&f[h]!==d&&f[h]!==e?this.deselect_node(f[h],!0,c):this.is_hidden(f[h])||this.select_node(f[h],!0,!1,c);this.trigger("changed",{action:"select_node",node:this.get_node(a),selected:this._data.core.selected,event:c})}else this.is_selected(a)?this.deselect_node(a,!1,c):this.select_node(a,!1,!1,c);else!this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&this.is_selected(a)?this.deselect_node(a,!1,c):(this.deselect_all(!0),this.select_node(a,!1,!1,c),this._data.core.last_clicked=this.get_node(a));this.trigger("activate_node",{node:this.get_node(a),event:c})},hover_node:function(a){if(a=this.get_node(a,!0),!a||!a.length||a.children(".jstree-hovered").length)return!1;var b=this.element.find(".jstree-hovered"),c=this.element;b&&b.length&&this.dehover_node(b),a.children(".jstree-anchor").addClass("jstree-hovered"),this.trigger("hover_node",{node:this.get_node(a)}),setTimeout(function(){c.attr("aria-activedescendant",a[0].id)},0)},dehover_node:function(a){return a=this.get_node(a,!0),a&&a.length&&a.children(".jstree-hovered").length?(a.children(".jstree-anchor").removeClass("jstree-hovered"),void this.trigger("dehover_node",{node:this.get_node(a)})):!1},select_node:function(b,c,d,e){var f,g,h,i;if(a.isArray(b)){for(b=b.slice(),g=0,h=b.length;h>g;g++)this.select_node(b[g],c,d,e);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=this.get_node(b,!0),void(b.state.selected||(b.state.selected=!0,this._data.core.selected.push(b.id),d||(f=this._open_to(b)),f&&f.length&&f.attr("aria-selected",!0).children(".jstree-anchor").addClass("jstree-clicked"),this.trigger("select_node",{node:b,selected:this._data.core.selected,event:e}),c||this.trigger("changed",{action:"select_node",node:b,selected:this._data.core.selected,event:e})))):!1},deselect_node:function(b,c,d){var e,f,g;if(a.isArray(b)){for(b=b.slice(),e=0,f=b.length;f>e;e++)this.deselect_node(b[e],c,d);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(g=this.get_node(b,!0),void(b.state.selected&&(b.state.selected=!1,this._data.core.selected=a.vakata.array_remove_item(this._data.core.selected,b.id),g.length&&g.attr("aria-selected",!1).children(".jstree-anchor").removeClass("jstree-clicked"),this.trigger("deselect_node",{node:b,selected:this._data.core.selected,event:d}),c||this.trigger("changed",{action:"deselect_node",node:b,selected:this._data.core.selected,event:d})))):!1},select_all:function(b){var c=this._data.core.selected.concat([]),d,e;for(this._data.core.selected=this._model.data[a.jstree.root].children_d.concat(),d=0,e=this._data.core.selected.length;e>d;d++)this._model.data[this._data.core.selected[d]]&&(this._model.data[this._data.core.selected[d]].state.selected=!0);this.redraw(!0),this.trigger("select_all",{selected:this._data.core.selected}),b||this.trigger("changed",{action:"select_all",selected:this._data.core.selected,old_selection:c})},deselect_all:function(a){var b=this._data.core.selected.concat([]),c,d;for(c=0,d=this._data.core.selected.length;d>c;c++)this._model.data[this._data.core.selected[c]]&&(this._model.data[this._data.core.selected[c]].state.selected=!1);this._data.core.selected=[],this.element.find(".jstree-clicked").removeClass("jstree-clicked").parent().attr("aria-selected",!1),this.trigger("deselect_all",{selected:this._data.core.selected,node:b}),a||this.trigger("changed",{action:"deselect_all",selected:this._data.core.selected,old_selection:b})},is_selected:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.state.selected:!1},get_selected:function(b){return b?a.map(this._data.core.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.core.selected.slice()},get_top_selected:function(b){var c=this.get_selected(!0),d={},e,f,g,h;for(e=0,f=c.length;f>e;e++)d[c[e].id]=c[e];for(e=0,f=c.length;f>e;e++)for(g=0,h=c[e].children_d.length;h>g;g++)d[c[e].children_d[g]]&&delete d[c[e].children_d[g]];c=[];for(e in d)d.hasOwnProperty(e)&&c.push(e);return b?a.map(c,a.proxy(function(a){return this.get_node(a)},this)):c},get_bottom_selected:function(b){var c=this.get_selected(!0),d=[],e,f;for(e=0,f=c.length;f>e;e++)c[e].children.length||d.push(c[e].id);return b?a.map(d,a.proxy(function(a){return this.get_node(a)},this)):d},get_state:function(){var b={core:{open:[],scroll:{left:this.element.scrollLeft(),top:this.element.scrollTop()},selected:[]}},c;for(c in this._model.data)this._model.data.hasOwnProperty(c)&&c!==a.jstree.root&&(this._model.data[c].state.opened&&b.core.open.push(c),this._model.data[c].state.selected&&b.core.selected.push(c));return b},set_state:function(c,d){if(c){if(c.core){var e,f,g,h,i;if(c.core.open)return a.isArray(c.core.open)&&c.core.open.length?this._load_nodes(c.core.open,function(a){this.open_node(a,!1,0),delete c.core.open,this.set_state(c,d)}):(delete c.core.open,this.set_state(c,d)),!1;if(c.core.scroll)return c.core.scroll&&c.core.scroll.left!==b&&this.element.scrollLeft(c.core.scroll.left),c.core.scroll&&c.core.scroll.top!==b&&this.element.scrollTop(c.core.scroll.top),delete c.core.scroll,this.set_state(c,d),!1;if(c.core.selected)return h=this,this.deselect_all(),a.each(c.core.selected,function(a,b){h.select_node(b,!1,!0)}),delete c.core.selected,this.set_state(c,d),!1;for(i in c)c.hasOwnProperty(i)&&"core"!==i&&-1===a.inArray(i,this.settings.plugins)&&delete c[i];if(a.isEmptyObject(c.core))return delete c.core,this.set_state(c,d),!1}return a.isEmptyObject(c)?(c=null,d&&d.call(this),this.trigger("set_state"),!1):!0}return!1},refresh:function(b,c){this._data.core.state=c===!0?{}:this.get_state(),c&&a.isFunction(c)&&(this._data.core.state=c.call(this,this._data.core.state)),this._cnt=0,this._model.data={},this._model.data[a.jstree.root]={id:a.jstree.root,parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}},this._data.core.selected=[],this._data.core.last_clicked=null,this._data.core.focused=null;var d=this.get_container_ul()[0].className;b||(this.element.html(""),this.element.attr("aria-activedescendant","j"+this._id+"_loading")),this.load_node(a.jstree.root,function(b,c){c&&(this.get_container_ul()[0].className=d,this._firstChild(this.get_container_ul()[0])&&this.element.attr("aria-activedescendant",this._firstChild(this.get_container_ul()[0]).id),this.set_state(a.extend(!0,{},this._data.core.state),function(){this.trigger("refresh")})),this._data.core.state=null})},refresh_node:function(b){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var c=[],d=[],e=this._data.core.selected.concat([]);d.push(b.id),b.state.opened===!0&&c.push(b.id),this.get_node(b,!0).find(".jstree-open").each(function(){d.push(this.id),c.push(this.id)}),this._load_nodes(d,a.proxy(function(a){this.open_node(c,!1,0),this.select_node(e),this.trigger("refresh_node",{node:b,nodes:a})},this),!1,!0)},set_id:function(b,c){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var d,e,f=this._model.data,g=b.id;for(c=c.toString(),f[b.parent].children[a.inArray(b.id,f[b.parent].children)]=c,d=0,e=b.parents.length;e>d;d++)f[b.parents[d]].children_d[a.inArray(b.id,f[b.parents[d]].children_d)]=c;for(d=0,e=b.children.length;e>d;d++)f[b.children[d]].parent=c;for(d=0,e=b.children_d.length;e>d;d++)f[b.children_d[d]].parents[a.inArray(b.id,f[b.children_d[d]].parents)]=c;return d=a.inArray(b.id,this._data.core.selected),-1!==d&&(this._data.core.selected[d]=c),d=this.get_node(b.id,!0),d&&(d.attr("id",c),this.element.attr("aria-activedescendant")===b.id&&this.element.attr("aria-activedescendant",c)),delete f[b.id],b.id=c,b.li_attr.id=c,f[c]=b,this.trigger("set_id",{node:b,"new":b.id,old:g}),!0},get_text:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.text:!1},set_text:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.set_text(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.text=c,this.get_node(b,!0).length&&this.redraw_node(b.id),this.trigger("set_text",{obj:b,text:c}),!0):!1},get_json:function(b,c,d){if(b=this.get_node(b||a.jstree.root),!b)return!1;c&&c.flat&&!d&&(d=[]);var e={id:b.id,text:b.text,icon:this.get_icon(b),li_attr:a.extend(!0,{},b.li_attr),a_attr:a.extend(!0,{},b.a_attr),state:{},data:c&&c.no_data?!1:a.extend(!0,{},b.data)},f,g;if(c&&c.flat?e.parent=b.parent:e.children=[],c&&c.no_state)delete e.state;else for(f in b.state)b.state.hasOwnProperty(f)&&(e.state[f]=b.state[f]);if(c&&c.no_li_attr&&delete e.li_attr,c&&c.no_a_attr&&delete e.a_attr,c&&c.no_id&&(delete e.id,e.li_attr&&e.li_attr.id&&delete e.li_attr.id,e.a_attr&&e.a_attr.id&&delete e.a_attr.id),c&&c.flat&&b.id!==a.jstree.root&&d.push(e),!c||!c.no_children)for(f=0,g=b.children.length;g>f;f++)c&&c.flat?this.get_json(b.children[f],c,d):e.children.push(this.get_json(b.children[f],c));return c&&c.flat?d:b.id===a.jstree.root?e.children:e},create_node:function(c,d,e,f,g){if(null===c&&(c=a.jstree.root),c=this.get_node(c),!c)return!1;if(e=e===b?"last":e,!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(c))return this.load_node(c,function(){this.create_node(c,d,e,f,!0)});d||(d={text:this.get_string("New node")}),"string"==typeof d&&(d={text:d}),d.text===b&&(d.text=this.get_string("New node"));var h,i,j,k;switch(c.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":h=this.get_node(c.parent),e=a.inArray(c.id,h.children),c=h;break;case"after":h=this.get_node(c.parent),e=a.inArray(c.id,h.children)+1,c=h;break;case"inside":case"first":e=0;break;case"last":e=c.children.length;break;default:e||(e=0)}if(e>c.children.length&&(e=c.children.length),d.id||(d.id=!0),!this.check("create_node",d,c,e))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(d.id===!0&&delete d.id,d=this._parse_model_from_json(d,c.id,c.parents.concat()),!d)return!1;for(h=this.get_node(d),i=[],i.push(d),i=i.concat(h.children_d),this.trigger("model",{nodes:i,parent:c.id}),c.children_d=c.children_d.concat(i),j=0,k=c.parents.length;k>j;j++)this._model.data[c.parents[j]].children_d=this._model.data[c.parents[j]].children_d.concat(i);for(d=h,h=[],j=0,k=c.children.length;k>j;j++)h[j>=e?j+1:j]=c.children[j];return h[e]=d.id,c.children=h,this.redraw_node(c,!0),f&&f.call(this,this.get_node(d)),this.trigger("create_node",{node:this.get_node(d),parent:c.id,position:e}),d.id},rename_node:function(b,c){var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.rename_node(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=b.text,this.check("rename_node",b,this.get_parent(b),c)?(this.set_text(b,c),this.trigger("rename_node",{node:b,text:c,old:f}),!0):(this.settings.core.error.call(this,this._data.core.last_error),!1)):!1},delete_node:function(b){var c,d,e,f,g,h,i,j,k,l,m,n;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.delete_node(b[c]);return!0}if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;if(e=this.get_node(b.parent),f=a.inArray(b.id,e.children),l=!1,!this.check("delete_node",b,e,f))return this.settings.core.error.call(this,this._data.core.last_error),!1;for(-1!==f&&(e.children=a.vakata.array_remove(e.children,f)),g=b.children_d.concat([]),g.push(b.id),h=0,i=b.parents.length;i>h;h++)this._model.data[b.parents[h]].children_d=a.vakata.array_filter(this._model.data[b.parents[h]].children_d,function(b){return-1===a.inArray(b,g)});for(j=0,k=g.length;k>j;j++)if(this._model.data[g[j]].state.selected){l=!0;break}for(l&&(this._data.core.selected=a.vakata.array_filter(this._data.core.selected,function(b){return-1===a.inArray(b,g)})),this.trigger("delete_node",{node:b,parent:e.id}),l&&this.trigger("changed",{action:"delete_node",node:b,selected:this._data.core.selected,parent:e.id}),j=0,k=g.length;k>j;j++)delete this._model.data[g[j]];return-1!==a.inArray(this._data.core.focused,g)&&(this._data.core.focused=null,m=this.element[0].scrollTop,n=this.element[0].scrollLeft,e.id===a.jstree.root?this._model.data[a.jstree.root].children[0]&&this.get_node(this._model.data[a.jstree.root].children[0],!0).children(".jstree-anchor").focus():this.get_node(e,!0).children(".jstree-anchor").focus(),this.element[0].scrollTop=m,this.element[0].scrollLeft=n),this.redraw_node(e,!0),!0},check:function(b,c,d,e,f){c=c&&c.id?c:this.get_node(c),d=d&&d.id?d:this.get_node(d);var g=b.match(/^move_node|copy_node|create_node$/i)?d:c,h=this.settings.core.check_callback;return"move_node"!==b&&"copy_node"!==b||f&&f.is_multi||c.id!==d.id&&("move_node"!==b||a.inArray(c.id,d.children)!==e)&&-1===a.inArray(d.id,c.children_d)?(g&&g.data&&(g=g.data),g&&g.functions&&(g.functions[b]===!1||g.functions[b]===!0)?(g.functions[b]===!1&&(this._data.core.last_error={error:"check",plugin:"core",id:"core_02",reason:"Node data prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})}),g.functions[b]):h===!1||a.isFunction(h)&&h.call(this,b,c,d,e,f)===!1||h&&h[b]===!1?(this._data.core.last_error={error:"check",plugin:"core",id:"core_03",reason:"User config for core.check_callback prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1):!0):(this._data.core.last_error={error:"check",plugin:"core",id:"core_01",reason:"Moving parent inside child",data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1)},last_error:function(){return this._data.core.last_error},move_node:function(c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t,u,v,w;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.move_node(c,d,e,f,!0,!1,i)});if(a.isArray(c)){if(1!==c.length){for(j=0,k=c.length;k>j;j++)(r=this.move_node(c[j],d,e,f,g,!1,i))&&(d=r,e="after");return this.redraw(),!0}c=c[0]}if(c=c&&c.id?c:this.get_node(c),!c||c.id===a.jstree.root)return!1;if(l=(c.parent||a.jstree.root).toString(),n=e.toString().match(/^(before|after)$/)&&d.id!==a.jstree.root?this.get_node(d.parent):d,o=i?i:this._model.data[c.id]?this:a.jstree.reference(c.id),p=!o||!o._id||this._id!==o._id,m=o&&o._id&&l&&o._model.data[l]&&o._model.data[l].children?a.inArray(c.id,o._model.data[l].children):-1,o&&o._id&&(c=o._model.data[c.id]),p)return(r=this.copy_node(c,d,e,f,g,!1,i))?(o&&o.delete_node(c),r):!1;switch(d.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,n.children);break;case"after":e=a.inArray(d.id,n.children)+1;break;case"inside":case"first":e=0;break;case"last":e=n.children.length;break;default:e||(e=0)}if(e>n.children.length&&(e=n.children.length),!this.check("move_node",c,n,e,{core:!0,origin:i,is_multi:o&&o._id&&o._id!==this._id,is_foreign:!o||!o._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(c.parent===n.id){for(q=n.children.concat(),r=a.inArray(c.id,q),-1!==r&&(q=a.vakata.array_remove(q,r),e>r&&e--),r=[],s=0,t=q.length;t>s;s++)r[s>=e?s+1:s]=q[s];r[e]=c.id,n.children=r,this._node_changed(n.id),this.redraw(n.id===a.jstree.root)}else{for(r=c.children_d.concat(),r.push(c.id),s=0,t=c.parents.length;t>s;s++){for(q=[],w=o._model.data[c.parents[s]].children_d,u=0,v=w.length;v>u;u++)-1===a.inArray(w[u],r)&&q.push(w[u]);o._model.data[c.parents[s]].children_d=q}for(o._model.data[l].children=a.vakata.array_remove_item(o._model.data[l].children,c.id),s=0,t=n.parents.length;t>s;s++)this._model.data[n.parents[s]].children_d=this._model.data[n.parents[s]].children_d.concat(r);for(q=[],s=0,t=n.children.length;t>s;s++)q[s>=e?s+1:s]=n.children[s];for(q[e]=c.id,n.children=q,n.children_d.push(c.id),n.children_d=n.children_d.concat(c.children_d),c.parent=n.id,r=n.parents.concat(),r.unshift(n.id),w=c.parents.length,c.parents=r,r=r.concat(),s=0,t=c.children_d.length;t>s;s++)this._model.data[c.children_d[s]].parents=this._model.data[c.children_d[s]].parents.slice(0,-1*w),Array.prototype.push.apply(this._model.data[c.children_d[s]].parents,r);(l===a.jstree.root||n.id===a.jstree.root)&&(this._model.force_full_redraw=!0),this._model.force_full_redraw||(this._node_changed(l),this._node_changed(n.id)),h||this.redraw()}return f&&f.call(this,c,n,e),this.trigger("move_node",{node:c,parent:n.id,position:e,old_parent:l,old_position:m,is_multi:o&&o._id&&o._id!==this._id,is_foreign:!o||!o._id,old_instance:o,new_instance:this}),c.id},copy_node:function(c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.copy_node(c,d,e,f,!0,!1,i)});if(a.isArray(c)){if(1!==c.length){for(j=0,k=c.length;k>j;j++)(m=this.copy_node(c[j],d,e,f,g,!0,i))&&(d=m,e="after");return this.redraw(),!0}c=c[0]}if(c=c&&c.id?c:this.get_node(c),!c||c.id===a.jstree.root)return!1;switch(q=(c.parent||a.jstree.root).toString(),r=e.toString().match(/^(before|after)$/)&&d.id!==a.jstree.root?this.get_node(d.parent):d,s=i?i:this._model.data[c.id]?this:a.jstree.reference(c.id),t=!s||!s._id||this._id!==s._id,s&&s._id&&(c=s._model.data[c.id]),d.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,r.children);break;case"after":e=a.inArray(d.id,r.children)+1;break;case"inside":case"first":e=0;break;case"last":e=r.children.length;break;default:e||(e=0)}if(e>r.children.length&&(e=r.children.length),!this.check("copy_node",c,r,e,{core:!0,origin:i,is_multi:s&&s._id&&s._id!==this._id,is_foreign:!s||!s._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(p=s?s.get_json(c,{no_id:!0,no_data:!0,no_state:!0}):c,!p)return!1;if(p.id===!0&&delete p.id,p=this._parse_model_from_json(p,r.id,r.parents.concat()),!p)return!1;for(m=this.get_node(p),c&&c.state&&c.state.loaded===!1&&(m.state.loaded=!1),l=[],l.push(p),l=l.concat(m.children_d),this.trigger("model",{nodes:l,parent:r.id}),n=0,o=r.parents.length;o>n;n++)this._model.data[r.parents[n]].children_d=this._model.data[r.parents[n]].children_d.concat(l);for(l=[],n=0,o=r.children.length;o>n;n++)l[n>=e?n+1:n]=r.children[n];return l[e]=m.id,r.children=l,r.children_d.push(m.id),r.children_d=r.children_d.concat(m.children_d),r.id===a.jstree.root&&(this._model.force_full_redraw=!0),this._model.force_full_redraw||this._node_changed(r.id),h||this.redraw(r.id===a.jstree.root),f&&f.call(this,m,r,e),this.trigger("copy_node",{node:m,original:c,parent:r.id,position:e,old_parent:q,old_position:s&&s._id&&q&&s._model.data[q]&&s._model.data[q].children?a.inArray(c.id,s._model.data[q].children):-1,is_multi:s&&s._id&&s._id!==this._id,is_foreign:!s||!s._id,old_instance:s,new_instance:this}),m.id},cut:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c=[],g,h,i;for(h=0,i=b.length;i>h;h++)g=this.get_node(b[h]),g&&g.id&&g.id!==a.jstree.root&&c.push(g);return c.length?(d=c,f=this,e="move_node",void this.trigger("cut",{node:b})):!1},copy:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c=[],g,h,i;for(h=0,i=b.length;i>h;h++)g=this.get_node(b[h]),g&&g.id&&g.id!==a.jstree.root&&c.push(g);return c.length?(d=c,f=this,e="copy_node",void this.trigger("copy",{node:b})):!1},get_buffer:function(){return{mode:e,node:d,inst:f}},can_paste:function(){return e!==!1&&d!==!1},paste:function(a,b){return a=this.get_node(a),a&&e&&e.match(/^(copy_node|move_node)$/)&&d?(this[e](d,a,b,!1,!1,!1,f)&&this.trigger("paste",{parent:a.id,node:d,mode:e}),d=!1,e=!1,void(f=!1)):!1},clear_buffer:function(){d=!1,e=!1,f=!1,this.trigger("clear_buffer")},edit:function(b,c,d){var e,f,g,h,j,k,l,m,n,o=!1;return(b=this.get_node(b))?this.settings.core.check_callback===!1?(this._data.core.last_error={error:"check",plugin:"core",id:"core_07",reason:"Could not edit node because of check_callback"},this.settings.core.error.call(this,this._data.core.last_error),!1):(n=b,c="string"==typeof c?c:b.text,this.set_text(b,""),b=this._open_to(b),n.text=c,e=this._data.core.rtl,f=this.element.width(),this._data.core.focused=n.id,g=b.children(".jstree-anchor").focus(),h=a(""),j=c,k=a("
      ",{css:{position:"absolute",top:"-200px",left:e?"0px":"-1000px",visibility:"hidden"}}).appendTo("body"),l=a("",{value:j,"class":"jstree-rename-input",css:{padding:"0",border:"1px solid silver","box-sizing":"border-box",display:"inline-block",height:this._data.core.li_height+"px",lineHeight:this._data.core.li_height+"px",width:"150px"},blur:a.proxy(function(c){c.stopImmediatePropagation(),c.preventDefault();var e=h.children(".jstree-rename-input"),f=e.val(),i=this.settings.core.force_text,m;""===f&&(f=j),k.remove(),h.replaceWith(g),h.remove(),j=i?j:a("
      ").append(a.parseHTML(j)).html(),this.set_text(b,j),m=!!this.rename_node(b,i?a("
      ").text(f).text():a("
      ").append(a.parseHTML(f)).html()),m||this.set_text(b,j),this._data.core.focused=n.id,setTimeout(a.proxy(function(){var a=this.get_node(n.id,!0);a.length&&(this._data.core.focused=n.id,a.children(".jstree-anchor").focus())},this),0),d&&d.call(this,n,m,o),l=null},this),keydown:function(a){var b=a.which;27===b&&(o=!0,this.value=j),(27===b||13===b||37===b||38===b||39===b||40===b||32===b)&&a.stopImmediatePropagation(),(27===b||13===b)&&(a.preventDefault(),this.blur())},click:function(a){a.stopImmediatePropagation()},mousedown:function(a){a.stopImmediatePropagation()},keyup:function(a){l.width(Math.min(k.text("pW"+this.value).width(),f))},keypress:function(a){return 13===a.which?!1:void 0}}),m={fontFamily:g.css("fontFamily")||"",fontSize:g.css("fontSize")||"", +fontWeight:g.css("fontWeight")||"",fontStyle:g.css("fontStyle")||"",fontStretch:g.css("fontStretch")||"",fontVariant:g.css("fontVariant")||"",letterSpacing:g.css("letterSpacing")||"",wordSpacing:g.css("wordSpacing")||""},h.attr("class",g.attr("class")).append(g.contents().clone()).append(l),g.replaceWith(h),k.css(m),l.css(m).width(Math.min(k.text("pW"+l[0].value).width(),f))[0].select(),void a(i).one("mousedown.jstree touchstart.jstree dnd_start.vakata",function(b){l&&b.target!==l&&a(l).blur()})):!1},set_theme:function(b,c){if(!b)return!1;if(c===!0){var d=this.settings.core.themes.dir;d||(d=a.jstree.path+"/themes"),c=d+"/"+b+"/style.css"}c&&-1===a.inArray(c,g)&&(a("head").append(''),g.push(c)),this._data.core.themes.name&&this.element.removeClass("jstree-"+this._data.core.themes.name),this._data.core.themes.name=b,this.element.addClass("jstree-"+b),this.element[this.settings.core.themes.responsive?"addClass":"removeClass"]("jstree-"+b+"-responsive"),this.trigger("set_theme",{theme:b})},get_theme:function(){return this._data.core.themes.name},set_theme_variant:function(a){this._data.core.themes.variant&&this.element.removeClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant),this._data.core.themes.variant=a,a&&this.element.addClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant)},get_theme_variant:function(){return this._data.core.themes.variant},show_stripes:function(){this._data.core.themes.stripes=!0,this.get_container_ul().addClass("jstree-striped"),this.trigger("show_stripes")},hide_stripes:function(){this._data.core.themes.stripes=!1,this.get_container_ul().removeClass("jstree-striped"),this.trigger("hide_stripes")},toggle_stripes:function(){this._data.core.themes.stripes?this.hide_stripes():this.show_stripes()},show_dots:function(){this._data.core.themes.dots=!0,this.get_container_ul().removeClass("jstree-no-dots"),this.trigger("show_dots")},hide_dots:function(){this._data.core.themes.dots=!1,this.get_container_ul().addClass("jstree-no-dots"),this.trigger("hide_dots")},toggle_dots:function(){this._data.core.themes.dots?this.hide_dots():this.show_dots()},show_icons:function(){this._data.core.themes.icons=!0,this.get_container_ul().removeClass("jstree-no-icons"),this.trigger("show_icons")},hide_icons:function(){this._data.core.themes.icons=!1,this.get_container_ul().addClass("jstree-no-icons"),this.trigger("hide_icons")},toggle_icons:function(){this._data.core.themes.icons?this.hide_icons():this.show_icons()},show_ellipsis:function(){this._data.core.themes.ellipsis=!0,this.get_container_ul().addClass("jstree-ellipsis"),this.trigger("show_ellipsis")},hide_ellipsis:function(){this._data.core.themes.ellipsis=!1,this.get_container_ul().removeClass("jstree-ellipsis"),this.trigger("hide_ellipsis")},toggle_ellipsis:function(){this._data.core.themes.ellipsis?this.hide_ellipsis():this.show_ellipsis()},set_icon:function(c,d){var e,f,g,h;if(a.isArray(c)){for(c=c.slice(),e=0,f=c.length;f>e;e++)this.set_icon(c[e],d);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?(h=c.icon,c.icon=d===!0||null===d||d===b||""===d?!0:d,g=this.get_node(c,!0).children(".jstree-anchor").children(".jstree-themeicon"),d===!1?this.hide_icon(c):d===!0||null===d||d===b||""===d?(g.removeClass("jstree-themeicon-custom "+h).css("background","").removeAttr("rel"),h===!1&&this.show_icon(c)):-1===d.indexOf("/")&&-1===d.indexOf(".")?(g.removeClass(h).css("background",""),g.addClass(d+" jstree-themeicon-custom").attr("rel",d),h===!1&&this.show_icon(c)):(g.removeClass(h).css("background",""),g.addClass("jstree-themeicon-custom").css("background","url('"+d+"') center center no-repeat").attr("rel",d),h===!1&&this.show_icon(c)),!0):!1},get_icon:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.icon:!1},hide_icon:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.hide_icon(b[c]);return!0}return b=this.get_node(b),b&&b!==a.jstree.root?(b.icon=!1,this.get_node(b,!0).children(".jstree-anchor").children(".jstree-themeicon").addClass("jstree-themeicon-hidden"),!0):!1},show_icon:function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.show_icon(b[c]);return!0}return b=this.get_node(b),b&&b!==a.jstree.root?(e=this.get_node(b,!0),b.icon=e.length?e.children(".jstree-anchor").children(".jstree-themeicon").attr("rel"):!0,b.icon||(b.icon=!0),e.children(".jstree-anchor").children(".jstree-themeicon").removeClass("jstree-themeicon-hidden"),!0):!1}},a.vakata={},a.vakata.attributes=function(b,c){b=a(b)[0];var d=c?{}:[];return b&&b.attributes&&a.each(b.attributes,function(b,e){-1===a.inArray(e.name.toLowerCase(),["style","contenteditable","hasfocus","tabindex"])&&null!==e.value&&""!==a.trim(e.value)&&(c?d[e.name]=e.value:d.push(e.name))}),d},a.vakata.array_unique=function(a){var c=[],d,e,f,g={};for(d=0,f=a.length;f>d;d++)g[a[d]]===b&&(c.push(a[d]),g[a[d]]=!0);return c},a.vakata.array_remove=function(a,b){return a.splice(b,1),a},a.vakata.array_remove_item=function(b,c){var d=a.inArray(c,b);return-1!==d?a.vakata.array_remove(b,d):b},a.vakata.array_filter=function(a,b,c,d,e){if(a.filter)return a.filter(b,c);d=[];for(e in a)~~e+""==e+""&&e>=0&&b.call(c,a[e],+e,a)&&d.push(a[e]);return d},a.jstree.plugins.changed=function(a,b){var c=[];this.trigger=function(a,d){var e,f;if(d||(d={}),"changed"===a.replace(".jstree","")){d.changed={selected:[],deselected:[]};var g={};for(e=0,f=c.length;f>e;e++)g[c[e]]=1;for(e=0,f=d.selected.length;f>e;e++)g[d.selected[e]]?g[d.selected[e]]=2:d.changed.selected.push(d.selected[e]);for(e=0,f=c.length;f>e;e++)1===g[c[e]]&&d.changed.deselected.push(c[e]);c=d.selected.slice()}b.trigger.call(this,a,d)},this.refresh=function(a,d){return c=[],b.refresh.apply(this,arguments)}};var j=i.createElement("I");j.className="jstree-icon jstree-checkbox",j.setAttribute("role","presentation"),a.jstree.defaults.checkbox={visible:!0,three_state:!0,whole_node:!0,keep_selected_style:!0,cascade:"",tie_selection:!0},a.jstree.plugins.checkbox=function(c,d){this.bind=function(){d.bind.call(this),this._data.checkbox.uto=!1,this._data.checkbox.selected=[],this.settings.checkbox.three_state&&(this.settings.checkbox.cascade="up+down+undetermined"),this.element.on("init.jstree",a.proxy(function(){this._data.checkbox.visible=this.settings.checkbox.visible,this.settings.checkbox.keep_selected_style||this.element.addClass("jstree-checkbox-no-clicked"),this.settings.checkbox.tie_selection&&this.element.addClass("jstree-checkbox-selection")},this)).on("loading.jstree",a.proxy(function(){this[this._data.checkbox.visible?"show_checkboxes":"hide_checkboxes"]()},this)),-1!==this.settings.checkbox.cascade.indexOf("undetermined")&&this.element.on("changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree",a.proxy(function(){this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)},this)),this.settings.checkbox.tie_selection||this.element.on("model.jstree",a.proxy(function(a,b){var c=this._model.data,d=c[b.parent],e=b.nodes,f,g;for(f=0,g=e.length;g>f;f++)c[e[f]].state.checked=c[e[f]].state.checked||c[e[f]].original&&c[e[f]].original.state&&c[e[f]].original.state.checked,c[e[f]].state.checked&&this._data.checkbox.selected.push(e[f])},this)),(-1!==this.settings.checkbox.cascade.indexOf("up")||-1!==this.settings.checkbox.cascade.indexOf("down"))&&this.element.on("model.jstree",a.proxy(function(b,c){var d=this._model.data,e=d[c.parent],f=c.nodes,g=[],h,i,j,k,l,m,n=this.settings.checkbox.cascade,o=this.settings.checkbox.tie_selection;if(-1!==n.indexOf("down"))if(e.state[o?"selected":"checked"]){for(i=0,j=f.length;j>i;i++)d[f[i]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(f)}else for(i=0,j=f.length;j>i;i++)if(d[f[i]].state[o?"selected":"checked"]){for(k=0,l=d[f[i]].children_d.length;l>k;k++)d[d[f[i]].children_d[k]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(d[f[i]].children_d)}if(-1!==n.indexOf("up")){for(i=0,j=e.children_d.length;j>i;i++)d[e.children_d[i]].children.length||g.push(d[e.children_d[i]].parent);for(g=a.vakata.array_unique(g),k=0,l=g.length;l>k;k++){e=d[g[k]];while(e&&e.id!==a.jstree.root){for(h=0,i=0,j=e.children.length;j>i;i++)h+=d[e.children[i]].state[o?"selected":"checked"];if(h!==j)break;e.state[o?"selected":"checked"]=!0,this._data[o?"core":"checkbox"].selected.push(e.id),m=this.get_node(e,!0),m&&m.length&&m.attr("aria-selected",!0).children(".jstree-anchor").addClass(o?"jstree-clicked":"jstree-checked"),e=this.get_node(e.parent)}}}this._data[o?"core":"checkbox"].selected=a.vakata.array_unique(this._data[o?"core":"checkbox"].selected)},this)).on(this.settings.checkbox.tie_selection?"select_node.jstree":"check_node.jstree",a.proxy(function(b,c){var d=c.node,e=this._model.data,f=this.get_node(d.parent),g=this.get_node(d,!0),h,i,j,k,l=this.settings.checkbox.cascade,m=this.settings.checkbox.tie_selection,n={},o=this._data[m?"core":"checkbox"].selected;for(h=0,i=o.length;i>h;h++)n[o[h]]=!0;if(-1!==l.indexOf("down"))for(h=0,i=d.children_d.length;i>h;h++)n[d.children_d[h]]=!0,k=e[d.children_d[h]],k.state[m?"selected":"checked"]=!0,k&&k.original&&k.original.state&&k.original.state.undetermined&&(k.original.state.undetermined=!1);if(-1!==l.indexOf("up"))while(f&&f.id!==a.jstree.root){for(j=0,h=0,i=f.children.length;i>h;h++)j+=e[f.children[h]].state[m?"selected":"checked"];if(j!==i)break;f.state[m?"selected":"checked"]=!0,n[f.id]=!0,k=this.get_node(f,!0),k&&k.length&&k.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),f=this.get_node(f.parent)}o=[];for(h in n)n.hasOwnProperty(h)&&o.push(h);this._data[m?"core":"checkbox"].selected=o,-1!==l.indexOf("down")&&g.length&&g.find(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked").parent().attr("aria-selected",!0)},this)).on(this.settings.checkbox.tie_selection?"deselect_all.jstree":"uncheck_all.jstree",a.proxy(function(b,c){var d=this.get_node(a.jstree.root),e=this._model.data,f,g,h;for(f=0,g=d.children_d.length;g>f;f++)h=e[d.children_d[f]],h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1)},this)).on(this.settings.checkbox.tie_selection?"deselect_node.jstree":"uncheck_node.jstree",a.proxy(function(b,c){var d=c.node,e=this.get_node(d,!0),f,g,h,i=this.settings.checkbox.cascade,j=this.settings.checkbox.tie_selection,k=this._data[j?"core":"checkbox"].selected,l={};if(d&&d.original&&d.original.state&&d.original.state.undetermined&&(d.original.state.undetermined=!1),-1!==i.indexOf("down"))for(f=0,g=d.children_d.length;g>f;f++)h=this._model.data[d.children_d[f]],h.state[j?"selected":"checked"]=!1,h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1);if(-1!==i.indexOf("up"))for(f=0,g=d.parents.length;g>f;f++)h=this._model.data[d.parents[f]],h.state[j?"selected":"checked"]=!1,h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1),h=this.get_node(d.parents[f],!0),h&&h.length&&h.attr("aria-selected",!1).children(".jstree-anchor").removeClass(j?"jstree-clicked":"jstree-checked");for(l={},f=0,g=k.length;g>f;f++)-1!==i.indexOf("down")&&-1!==a.inArray(k[f],d.children_d)||-1!==i.indexOf("up")&&-1!==a.inArray(k[f],d.parents)||(l[k[f]]=!0);k=[];for(f in l)l.hasOwnProperty(f)&&k.push(f);this._data[j?"core":"checkbox"].selected=k,-1!==i.indexOf("down")&&e.length&&e.find(".jstree-anchor").removeClass(j?"jstree-clicked":"jstree-checked").parent().attr("aria-selected",!1)},this)),-1!==this.settings.checkbox.cascade.indexOf("up")&&this.element.on("delete_node.jstree",a.proxy(function(b,c){var d=this.get_node(c.parent),e=this._model.data,f,g,h,i,j=this.settings.checkbox.tie_selection;while(d&&d.id!==a.jstree.root&&!d.state[j?"selected":"checked"]){for(h=0,f=0,g=d.children.length;g>f;f++)h+=e[d.children[f]].state[j?"selected":"checked"];if(!(g>0&&h===g))break;d.state[j?"selected":"checked"]=!0,this._data[j?"core":"checkbox"].selected.push(d.id),i=this.get_node(d,!0),i&&i.length&&i.attr("aria-selected",!0).children(".jstree-anchor").addClass(j?"jstree-clicked":"jstree-checked"),d=this.get_node(d.parent)}},this)).on("move_node.jstree",a.proxy(function(b,c){var d=c.is_multi,e=c.old_parent,f=this.get_node(c.parent),g=this._model.data,h,i,j,k,l,m=this.settings.checkbox.tie_selection;if(!d){h=this.get_node(e);while(h&&h.id!==a.jstree.root&&!h.state[m?"selected":"checked"]){for(i=0,j=0,k=h.children.length;k>j;j++)i+=g[h.children[j]].state[m?"selected":"checked"];if(!(k>0&&i===k))break;h.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),h=this.get_node(h.parent)}}h=f;while(h&&h.id!==a.jstree.root){for(i=0,j=0,k=h.children.length;k>j;j++)i+=g[h.children[j]].state[m?"selected":"checked"];if(i===k)h.state[m?"selected":"checked"]||(h.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"));else{if(!h.state[m?"selected":"checked"])break;h.state[m?"selected":"checked"]=!1,this._data[m?"core":"checkbox"].selected=a.vakata.array_remove_item(this._data[m?"core":"checkbox"].selected,h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!1).children(".jstree-anchor").removeClass(m?"jstree-clicked":"jstree-checked")}h=this.get_node(h.parent)}},this))},this._undetermined=function(){if(null!==this.element){var c,d,e,f,g={},h=this._model.data,i=this.settings.checkbox.tie_selection,j=this._data[i?"core":"checkbox"].selected,k=[],l=this;for(c=0,d=j.length;d>c;c++)if(h[j[c]]&&h[j[c]].parents)for(e=0,f=h[j[c]].parents.length;f>e;e++){if(g[h[j[c]].parents[e]]!==b)break;h[j[c]].parents[e]!==a.jstree.root&&(g[h[j[c]].parents[e]]=!0,k.push(h[j[c]].parents[e]))}for(this.element.find(".jstree-closed").not(":has(.jstree-children)").each(function(){var i=l.get_node(this),j;if(i.state.loaded){for(c=0,d=i.children_d.length;d>c;c++)if(j=h[i.children_d[c]],!j.state.loaded&&j.original&&j.original.state&&j.original.state.undetermined&&j.original.state.undetermined===!0)for(g[j.id]===b&&j.id!==a.jstree.root&&(g[j.id]=!0,k.push(j.id)),e=0,f=j.parents.length;f>e;e++)g[j.parents[e]]===b&&j.parents[e]!==a.jstree.root&&(g[j.parents[e]]=!0,k.push(j.parents[e]))}else if(i.original&&i.original.state&&i.original.state.undetermined&&i.original.state.undetermined===!0)for(g[i.id]===b&&i.id!==a.jstree.root&&(g[i.id]=!0,k.push(i.id)),e=0,f=i.parents.length;f>e;e++)g[i.parents[e]]===b&&i.parents[e]!==a.jstree.root&&(g[i.parents[e]]=!0,k.push(i.parents[e]))}),this.element.find(".jstree-undetermined").removeClass("jstree-undetermined"),c=0,d=k.length;d>c;c++)h[k[c]].state[i?"selected":"checked"]||(j=this.get_node(k[c],!0),j&&j.length&&j.children(".jstree-anchor").children(".jstree-checkbox").addClass("jstree-undetermined"))}},this.redraw_node=function(b,c,e,f){if(b=d.redraw_node.apply(this,arguments)){var g,h,i=null,k=null;for(g=0,h=b.childNodes.length;h>g;g++)if(b.childNodes[g]&&b.childNodes[g].className&&-1!==b.childNodes[g].className.indexOf("jstree-anchor")){i=b.childNodes[g];break}i&&(!this.settings.checkbox.tie_selection&&this._model.data[b.id].state.checked&&(i.className+=" jstree-checked"),k=j.cloneNode(!1),this._model.data[b.id].state.checkbox_disabled&&(k.className+=" jstree-checkbox-disabled"),i.insertBefore(k,i.childNodes[0]))}return e||-1===this.settings.checkbox.cascade.indexOf("undetermined")||(this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)),b},this.show_checkboxes=function(){this._data.core.themes.checkboxes=!0,this.get_container_ul().removeClass("jstree-no-checkboxes")},this.hide_checkboxes=function(){this._data.core.themes.checkboxes=!1,this.get_container_ul().addClass("jstree-no-checkboxes")},this.toggle_checkboxes=function(){this._data.core.themes.checkboxes?this.hide_checkboxes():this.show_checkboxes()},this.is_undetermined=function(b){b=this.get_node(b);var c=this.settings.checkbox.cascade,d,e,f=this.settings.checkbox.tie_selection,g=this._data[f?"core":"checkbox"].selected,h=this._model.data;if(!b||b.state[f?"selected":"checked"]===!0||-1===c.indexOf("undetermined")||-1===c.indexOf("down")&&-1===c.indexOf("up"))return!1;if(!b.state.loaded&&b.original.state.undetermined===!0)return!0;for(d=0,e=b.children_d.length;e>d;d++)if(-1!==a.inArray(b.children_d[d],g)||!h[b.children_d[d]].state.loaded&&h[b.children_d[d]].original.state.undetermined)return!0;return!1},this.disable_checkbox=function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.disable_checkbox(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(e=this.get_node(b,!0),void(b.state.checkbox_disabled||(b.state.checkbox_disabled=!0,e&&e.length&&e.children(".jstree-anchor").children(".jstree-checkbox").addClass("jstree-checkbox-disabled"),this.trigger("disable_checkbox",{node:b})))):!1},this.enable_checkbox=function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.enable_checkbox(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(e=this.get_node(b,!0),void(b.state.checkbox_disabled&&(b.state.checkbox_disabled=!1,e&&e.length&&e.children(".jstree-anchor").children(".jstree-checkbox").removeClass("jstree-checkbox-disabled"),this.trigger("enable_checkbox",{node:b})))):!1},this.activate_node=function(b,c){return a(c.target).hasClass("jstree-checkbox-disabled")?!1:(this.settings.checkbox.tie_selection&&(this.settings.checkbox.whole_node||a(c.target).hasClass("jstree-checkbox"))&&(c.ctrlKey=!0),this.settings.checkbox.tie_selection||!this.settings.checkbox.whole_node&&!a(c.target).hasClass("jstree-checkbox")?d.activate_node.call(this,b,c):this.is_disabled(b)?!1:(this.is_checked(b)?this.uncheck_node(b,c):this.check_node(b,c),void this.trigger("activate_node",{node:this.get_node(b)})))},this.check_node=function(b,c){if(this.settings.checkbox.tie_selection)return this.select_node(b,!1,!0,c);var d,e,f,g;if(a.isArray(b)){for(b=b.slice(),e=0,f=b.length;f>e;e++)this.check_node(b[e],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(d=this.get_node(b,!0),void(b.state.checked||(b.state.checked=!0,this._data.checkbox.selected.push(b.id),d&&d.length&&d.children(".jstree-anchor").addClass("jstree-checked"),this.trigger("check_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.uncheck_node=function(b,c){if(this.settings.checkbox.tie_selection)return this.deselect_node(b,!1,c);var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.uncheck_node(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=this.get_node(b,!0),void(b.state.checked&&(b.state.checked=!1,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,b.id),f.length&&f.children(".jstree-anchor").removeClass("jstree-checked"),this.trigger("uncheck_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.check_all=function(){if(this.settings.checkbox.tie_selection)return this.select_all();var b=this._data.checkbox.selected.concat([]),c,d;for(this._data.checkbox.selected=this._model.data[a.jstree.root].children_d.concat(),c=0,d=this._data.checkbox.selected.length;d>c;c++)this._model.data[this._data.checkbox.selected[c]]&&(this._model.data[this._data.checkbox.selected[c]].state.checked=!0);this.redraw(!0),this.trigger("check_all",{selected:this._data.checkbox.selected})},this.uncheck_all=function(){if(this.settings.checkbox.tie_selection)return this.deselect_all();var a=this._data.checkbox.selected.concat([]),b,c;for(b=0,c=this._data.checkbox.selected.length;c>b;b++)this._model.data[this._data.checkbox.selected[b]]&&(this._model.data[this._data.checkbox.selected[b]].state.checked=!1);this._data.checkbox.selected=[],this.element.find(".jstree-checked").removeClass("jstree-checked"),this.trigger("uncheck_all",{selected:this._data.checkbox.selected,node:a})},this.is_checked=function(b){return this.settings.checkbox.tie_selection?this.is_selected(b):(b=this.get_node(b),b&&b.id!==a.jstree.root?b.state.checked:!1)},this.get_checked=function(b){return this.settings.checkbox.tie_selection?this.get_selected(b):b?a.map(this._data.checkbox.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.checkbox.selected},this.get_top_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_top_selected(b);var c=this.get_checked(!0),d={},e,f,g,h;for(e=0,f=c.length;f>e;e++)d[c[e].id]=c[e];for(e=0,f=c.length;f>e;e++)for(g=0,h=c[e].children_d.length;h>g;g++)d[c[e].children_d[g]]&&delete d[c[e].children_d[g]];c=[];for(e in d)d.hasOwnProperty(e)&&c.push(e);return b?a.map(c,a.proxy(function(a){return this.get_node(a)},this)):c},this.get_bottom_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_bottom_selected(b);var c=this.get_checked(!0),d=[],e,f;for(e=0,f=c.length;f>e;e++)c[e].children.length||d.push(c[e].id);return b?a.map(d,a.proxy(function(a){return this.get_node(a)},this)):d},this.load_node=function(b,c){var e,f,g,h,i,j;if(!a.isArray(b)&&!this.settings.checkbox.tie_selection&&(j=this.get_node(b),j&&j.state.loaded))for(e=0,f=j.children_d.length;f>e;e++)this._model.data[j.children_d[e]].state.checked&&(i=!0,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,j.children_d[e]));return d.load_node.apply(this,arguments)},this.get_state=function(){var a=d.get_state.apply(this,arguments);return this.settings.checkbox.tie_selection?a:(a.checkbox=this._data.checkbox.selected.slice(),a)},this.set_state=function(b,c){var e=d.set_state.apply(this,arguments);if(e&&b.checkbox){if(!this.settings.checkbox.tie_selection){this.uncheck_all();var f=this;a.each(b.checkbox,function(a,b){f.check_node(b)})}return delete b.checkbox,this.set_state(b,c),!1}return e},this.refresh=function(a,b){return this.settings.checkbox.tie_selection||(this._data.checkbox.selected=[]),d.refresh.apply(this,arguments)}},a.jstree.defaults.conditionalselect=function(){return!0},a.jstree.plugins.conditionalselect=function(a,b){this.activate_node=function(a,c){this.settings.conditionalselect.call(this,this.get_node(a),c)&&b.activate_node.call(this,a,c)}},a.jstree.defaults.contextmenu={select_node:!0,show_at_node:!0,items:function(b,c){return{create:{separator_before:!1,separator_after:!0,_disabled:!1,label:"Create",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.create_node(d,{},"last",function(a){setTimeout(function(){c.edit(a)},0)})}},rename:{separator_before:!1,separator_after:!1,_disabled:!1,label:"Rename",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.edit(d)}},remove:{separator_before:!1,icon:!1,separator_after:!1,_disabled:!1,label:"Delete",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.delete_node(c.get_selected()):c.delete_node(d)}},ccp:{separator_before:!0,icon:!1,separator_after:!1,label:"Edit",action:!1,submenu:{cut:{separator_before:!1,separator_after:!1,label:"Cut",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.cut(c.get_top_selected()):c.cut(d)}},copy:{separator_before:!1,icon:!1,separator_after:!1,label:"Copy",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.copy(c.get_top_selected()):c.copy(d)}},paste:{separator_before:!1,icon:!1,_disabled:function(b){return!a.jstree.reference(b.reference).can_paste()},separator_after:!1,label:"Paste",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.paste(d)}}}}}}},a.jstree.plugins.contextmenu=function(c,d){this.bind=function(){d.bind.call(this);var b=0,c=null,e,f;this.element.on("contextmenu.jstree",".jstree-anchor",a.proxy(function(a,d){"input"!==a.target.tagName.toLowerCase()&&(a.preventDefault(),b=a.ctrlKey?+new Date:0,(d||c)&&(b=+new Date+1e4),c&&clearTimeout(c),this.is_loading(a.currentTarget)||this.show_contextmenu(a.currentTarget,a.pageX,a.pageY,a))},this)).on("click.jstree",".jstree-anchor",a.proxy(function(c){this._data.contextmenu.visible&&(!b||+new Date-b>250)&&a.vakata.context.hide(),b=0},this)).on("touchstart.jstree",".jstree-anchor",function(b){b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(e=b.originalEvent.changedTouches[0].clientX,f=b.originalEvent.changedTouches[0].clientY,c=setTimeout(function(){a(b.currentTarget).trigger("contextmenu",!0)},750))}).on("touchmove.vakata.jstree",function(a){c&&a.originalEvent&&a.originalEvent.changedTouches&&a.originalEvent.changedTouches[0]&&(Math.abs(e-a.originalEvent.changedTouches[0].clientX)>50||Math.abs(f-a.originalEvent.changedTouches[0].clientY)>50)&&clearTimeout(c)}).on("touchend.vakata.jstree",function(a){c&&clearTimeout(c)}),a(i).on("context_hide.vakata.jstree",a.proxy(function(b,c){this._data.contextmenu.visible=!1,a(c.reference).removeClass("jstree-context")},this))},this.teardown=function(){this._data.contextmenu.visible&&a.vakata.context.hide(),d.teardown.call(this)},this.show_contextmenu=function(c,d,e,f){if(c=this.get_node(c),!c||c.id===a.jstree.root)return!1;var g=this.settings.contextmenu,h=this.get_node(c,!0),i=h.children(".jstree-anchor"),j=!1,k=!1;(g.show_at_node||d===b||e===b)&&(j=i.offset(),d=j.left,e=j.top+this._data.core.li_height),this.settings.contextmenu.select_node&&!this.is_selected(c)&&this.activate_node(c,f),k=g.items,a.isFunction(k)&&(k=k.call(this,c,a.proxy(function(a){this._show_contextmenu(c,d,e,a)},this))),a.isPlainObject(k)&&this._show_contextmenu(c,d,e,k)},this._show_contextmenu=function(b,c,d,e){var f=this.get_node(b,!0),g=f.children(".jstree-anchor");a(i).one("context_show.vakata.jstree",a.proxy(function(b,c){var d="jstree-contextmenu jstree-"+this.get_theme()+"-contextmenu";a(c.element).addClass(d),g.addClass("jstree-context")},this)),this._data.contextmenu.visible=!0,a.vakata.context.show(g,{x:c,y:d},e),this.trigger("show_contextmenu",{node:b,x:c,y:d})}},function(a){var b=!1,c={element:!1,reference:!1,position_x:0,position_y:0,items:[],html:"",is_visible:!1};a.vakata.context={settings:{hide_onmouseleave:0,icons:!0},_trigger:function(b){a(i).triggerHandler("context_"+b+".vakata",{reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}})},_execute:function(b){return b=c.items[b],b&&(!b._disabled||a.isFunction(b._disabled)&&!b._disabled({item:b,reference:c.reference,element:c.element}))&&b.action?b.action.call(null,{item:b,reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}}):!1},_parse:function(b,d){if(!b)return!1;d||(c.html="",c.items=[]);var e="",f=!1,g;return d&&(e+=""),d||(c.html=e,a.vakata.context._trigger("parse")),e.length>10?e:!1},_show_submenu:function(c){if(c=a(c),c.length&&c.children("ul").length){var d=c.children("ul"),e=c.offset().left,f=e+c.outerWidth(),g=c.offset().top,h=d.width(),i=d.height(),j=a(window).width()+a(window).scrollLeft(),k=a(window).height()+a(window).scrollTop();b?c[f-(h+10+c.outerWidth())<0?"addClass":"removeClass"]("vakata-context-left"):c[f+h>j&&e>j-f?"addClass":"removeClass"]("vakata-context-right"),g+i+10>k&&d.css("bottom","-1px"),c.hasClass("vakata-context-right")?h>e&&d.css("margin-right",e-h):h>j-f&&d.css("margin-left",j-f-h),d.show()}},show:function(d,e,f){var g,h,i,j,k,l,m,n,o=!0;switch(c.element&&c.element.length&&c.element.width(""),o){case!e&&!d:return!1;case!!e&&!!d:c.reference=d,c.position_x=e.x,c.position_y=e.y;break;case!e&&!!d:c.reference=d,g=d.offset(),c.position_x=g.left+d.outerHeight(),c.position_y=g.top;break;case!!e&&!d:c.position_x=e.x,c.position_y=e.y}d&&!f&&a(d).data("vakata_contextmenu")&&(f=a(d).data("vakata_contextmenu")),a.vakata.context._parse(f)&&c.element.html(c.html),c.items.length&&(c.element.appendTo("body"),h=c.element,i=c.position_x,j=c.position_y,k=h.width(),l=h.height(),m=a(window).width()+a(window).scrollLeft(),n=a(window).height()+a(window).scrollTop(),b&&(i-=h.outerWidth()-a(d).outerWidth(),im&&(i=m-(k+20)),j+l+20>n&&(j=n-(l+20)),c.element.css({left:i,top:j}).show().find("a").first().focus().parent().addClass("vakata-context-hover"),c.is_visible=!0,a.vakata.context._trigger("show"))},hide:function(){c.is_visible&&(c.element.hide().find("ul").hide().end().find(":focus").blur().end().detach(),c.is_visible=!1,a.vakata.context._trigger("hide"))}},a(function(){b="rtl"===a("body").css("direction");var d=!1;c.element=a("
        "),c.element.on("mouseenter","li",function(b){b.stopImmediatePropagation(),a.contains(this,b.relatedTarget)||(d&&clearTimeout(d),c.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(),a(this).siblings().find("ul").hide().end().end().parentsUntil(".vakata-context","li").addBack().addClass("vakata-context-hover"),a.vakata.context._show_submenu(this))}).on("mouseleave","li",function(b){a.contains(this,b.relatedTarget)||a(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover")}).on("mouseleave",function(b){a(this).find(".vakata-context-hover").removeClass("vakata-context-hover"),a.vakata.context.settings.hide_onmouseleave&&(d=setTimeout(function(b){return function(){a.vakata.context.hide()}}(this),a.vakata.context.settings.hide_onmouseleave))}).on("click","a",function(b){b.preventDefault(),a(this).blur().parent().hasClass("vakata-context-disabled")||a.vakata.context._execute(a(this).attr("rel"))===!1||a.vakata.context.hide()}).on("keydown","a",function(b){var d=null;switch(b.which){case 13:case 32:b.type="click",b.preventDefault(),a(b.currentTarget).trigger(b);break;case 37:c.is_visible&&(c.element.find(".vakata-context-hover").last().closest("li").first().find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 38:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(), +d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 39:c.is_visible&&(c.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 40:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(),d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 27:a.vakata.context.hide(),b.preventDefault()}}).on("keydown",function(a){a.preventDefault();var b=c.element.find(".vakata-contextmenu-shortcut-"+a.which).parent();b.parent().not(".vakata-context-disabled")&&b.click()}),a(i).on("mousedown.vakata.jstree",function(b){c.is_visible&&!a.contains(c.element[0],b.target)&&a.vakata.context.hide()}).on("context_show.vakata.jstree",function(a,d){c.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"),b&&c.element.addClass("vakata-context-rtl").css("direction","rtl"),c.element.find("ul").hide().end()})})}(a),a.jstree.defaults.dnd={copy:!0,open_timeout:500,is_draggable:!0,check_while_dragging:!0,always_copy:!1,inside_pos:0,drag_selection:!0,touch:!0,large_drop_target:!1,large_drag_target:!1,use_html5:!1};var k,l;a.jstree.plugins.dnd=function(b,c){this.init=function(a,b){c.init.call(this,a,b),this.settings.dnd.use_html5=this.settings.dnd.use_html5&&"draggable"in i.createElement("span")},this.bind=function(){c.bind.call(this),this.element.on(this.settings.dnd.use_html5?"dragstart.jstree":"mousedown.jstree touchstart.jstree",this.settings.dnd.large_drag_target?".jstree-node":".jstree-anchor",a.proxy(function(b){if(this.settings.dnd.large_drag_target&&a(b.target).closest(".jstree-node")[0]!==b.currentTarget)return!0;if("touchstart"===b.type&&(!this.settings.dnd.touch||"selected"===this.settings.dnd.touch&&!a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").hasClass("jstree-clicked")))return!0;var c=this.get_node(b.target),d=this.is_selected(c)&&this.settings.dnd.drag_selection?this.get_top_selected().length:1,e=d>1?d+" "+this.get_string("nodes"):this.get_text(b.currentTarget);if(this.settings.core.force_text&&(e=a.vakata.html.escape(e)),c&&c.id&&c.id!==a.jstree.root&&(1===b.which||"touchstart"===b.type||"dragstart"===b.type)&&(this.settings.dnd.is_draggable===!0||a.isFunction(this.settings.dnd.is_draggable)&&this.settings.dnd.is_draggable.call(this,d>1?this.get_top_selected(!0):[c],b))){if(k={jstree:!0,origin:this,obj:this.get_node(c,!0),nodes:d>1?this.get_top_selected():[c.id]},l=b.currentTarget,!this.settings.dnd.use_html5)return this.element.trigger("mousedown.jstree"),a.vakata.dnd.start(b,k,'
        '+e+'
        ');a.vakata.dnd._trigger("start",b,{helper:a(),element:l,data:k})}},this)),this.settings.dnd.use_html5&&this.element.on("dragover.jstree",function(b){return b.preventDefault(),a.vakata.dnd._trigger("move",b,{helper:a(),element:l,data:k}),!1}).on("drop.jstree",a.proxy(function(b){return b.preventDefault(),a.vakata.dnd._trigger("stop",b,{helper:a(),element:l,data:k}),!1},this))},this.redraw_node=function(a,b,d,e){if(a=c.redraw_node.apply(this,arguments),a&&this.settings.dnd.use_html5)if(this.settings.dnd.large_drag_target)a.setAttribute("draggable",!0);else{var f,g,h=null;for(f=0,g=a.childNodes.length;g>f;f++)if(a.childNodes[f]&&a.childNodes[f].className&&-1!==a.childNodes[f].className.indexOf("jstree-anchor")){h=a.childNodes[f];break}h&&h.setAttribute("draggable",!0)}return a}},a(function(){var c=!1,d=!1,e=!1,f=!1,g=a('
         
        ').hide();a(i).on("dnd_start.vakata.jstree",function(a,b){c=!1,e=!1,b&&b.data&&b.data.jstree&&g.appendTo("body")}).on("dnd_move.vakata.jstree",function(h,i){if(f&&(i.event&&"dragover"===i.event.type&&i.event.target===e.target||clearTimeout(f)),i&&i.data&&i.data.jstree&&(!i.event.target.id||"jstree-marker"!==i.event.target.id)){e=i.event;var j=a.jstree.reference(i.event.target),k=!1,l=!1,m=!1,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D;if(j&&j._data&&j._data.dnd)if(g.attr("class","jstree-"+j.get_theme()+(j.settings.core.themes.responsive?" jstree-dnd-responsive":"")),C=i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey)),i.helper.children().attr("class","jstree-"+j.get_theme()+" jstree-"+j.get_theme()+"-"+j.get_theme_variant()+" "+(j.settings.core.themes.responsive?" jstree-dnd-responsive":"")).find(".jstree-copy").first()[C?"show":"hide"](),i.event.target!==j.element[0]&&i.event.target!==j.get_container_ul()[0]||0!==j.get_container_ul().children().length){if(k=j.settings.dnd.large_drop_target?a(i.event.target).closest(".jstree-node").children(".jstree-anchor"):a(i.event.target).closest(".jstree-anchor"),k&&k.length&&k.parent().is(".jstree-closed, .jstree-open, .jstree-leaf")&&(l=k.offset(),m=(i.event.pageY!==b?i.event.pageY:i.event.originalEvent.pageY)-l.top,q=k.outerHeight(),t=q/3>m?["b","i","a"]:m>q-q/3?["a","i","b"]:m>q/2?["i","a","b"]:["i","b","a"],a.each(t,function(b,e){switch(e){case"b":o=l.left-6,p=l.top,r=j.get_parent(k),s=k.parent().index();break;case"i":A=j.settings.dnd.inside_pos,B=j.get_node(k.parent()),o=l.left-2,p=l.top+q/2+1,r=B.id,s="first"===A?0:"last"===A?B.children.length:Math.min(A,B.children.length);break;case"a":o=l.left-6,p=l.top+q,r=j.get_parent(k),s=k.parent().index()+1}for(u=!0,v=0,w=i.data.nodes.length;w>v;v++)if(x=i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey))?"copy_node":"move_node",y=s,"move_node"===x&&"a"===e&&i.data.origin&&i.data.origin===j&&r===j.get_parent(i.data.nodes[v])&&(z=j.get_node(r),y>a.inArray(i.data.nodes[v],z.children)&&(y-=1)),u=u&&(j&&j.settings&&j.settings.dnd&&j.settings.dnd.check_while_dragging===!1||j.check(x,i.data.origin&&i.data.origin!==j?i.data.origin.get_node(i.data.nodes[v]):i.data.nodes[v],r,y,{dnd:!0,ref:j.get_node(k.parent()),pos:e,origin:i.data.origin,is_multi:i.data.origin&&i.data.origin!==j,is_foreign:!i.data.origin})),!u){j&&j.last_error&&(d=j.last_error());break}return"i"===e&&k.parent().is(".jstree-closed")&&j.settings.dnd.open_timeout&&(f=setTimeout(function(a,b){return function(){a.open_node(b)}}(j,k),j.settings.dnd.open_timeout)),u?(D=j.get_node(r,!0),D.hasClass(".jstree-dnd-parent")||(a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),D.addClass("jstree-dnd-parent")),c={ins:j,par:r,pos:"i"!==e||"last"!==A||0!==s||j.is_loaded(B)?s:"last"},g.css({left:o+"px",top:p+"px"}).show(),i.helper.find(".jstree-icon").first().removeClass("jstree-er").addClass("jstree-ok"),i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect=C?"copy":"move"),d={},t=!0,!1):void 0}),t===!0))return}else{for(u=!0,v=0,w=i.data.nodes.length;w>v;v++)if(u=u&&j.check(i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey))?"copy_node":"move_node",i.data.origin&&i.data.origin!==j?i.data.origin.get_node(i.data.nodes[v]):i.data.nodes[v],a.jstree.root,"last",{dnd:!0,ref:j.get_node(a.jstree.root),pos:"i",origin:i.data.origin,is_multi:i.data.origin&&i.data.origin!==j,is_foreign:!i.data.origin}),!u)break;if(u)return c={ins:j,par:a.jstree.root,pos:"last"},g.hide(),i.helper.find(".jstree-icon").first().removeClass("jstree-er").addClass("jstree-ok"),void(i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect=C?"copy":"move"))}a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),c=!1,i.helper.find(".jstree-icon").removeClass("jstree-ok").addClass("jstree-er"),i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect="none"),g.hide()}}).on("dnd_scroll.vakata.jstree",function(a,b){b&&b.data&&b.data.jstree&&(g.hide(),c=!1,e=!1,b.helper.find(".jstree-icon").first().removeClass("jstree-ok").addClass("jstree-er"))}).on("dnd_stop.vakata.jstree",function(b,h){if(a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),f&&clearTimeout(f),h&&h.data&&h.data.jstree){g.hide().detach();var i,j,k=[];if(c){for(i=0,j=h.data.nodes.length;j>i;i++)k[i]=h.data.origin?h.data.origin.get_node(h.data.nodes[i]):h.data.nodes[i];c.ins[h.data.origin&&(h.data.origin.settings.dnd.always_copy||h.data.origin.settings.dnd.copy&&(h.event.metaKey||h.event.ctrlKey))?"copy_node":"move_node"](k,c.par,c.pos,!1,!1,!1,h.data.origin)}else i=a(h.event.target).closest(".jstree"),i.length&&d&&d.error&&"check"===d.error&&(i=i.jstree(!0),i&&i.settings.core.error.call(this,d));e=!1,c=!1}}).on("keyup.jstree keydown.jstree",function(b,h){h=a.vakata.dnd._get(),h&&h.data&&h.data.jstree&&("keyup"===b.type&&27===b.which?(f&&clearTimeout(f),c=!1,d=!1,e=!1,f=!1,g.hide().detach(),a.vakata.dnd._clean()):(h.helper.find(".jstree-copy").first()[h.data.origin&&(h.data.origin.settings.dnd.always_copy||h.data.origin.settings.dnd.copy&&(b.metaKey||b.ctrlKey))?"show":"hide"](),e&&(e.metaKey=b.metaKey,e.ctrlKey=b.ctrlKey,a.vakata.dnd._trigger("move",e))))})}),function(a){a.vakata.html={div:a("
        "),escape:function(b){return a.vakata.html.div.text(b).html()},strip:function(b){return a.vakata.html.div.empty().append(a.parseHTML(b)).text()}};var c={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1};a.vakata.dnd={settings:{scroll_speed:10,scroll_proximity:20,helper_left:5,helper_top:10,threshold:5,threshold_touch:50},_trigger:function(c,d,e){e===b&&(e=a.vakata.dnd._get()),e.event=d,a(i).triggerHandler("dnd_"+c+".vakata",e)},_get:function(){return{data:c.data,element:c.element,helper:c.helper}},_clean:function(){c.helper&&c.helper.remove(),c.scroll_i&&(clearInterval(c.scroll_i),c.scroll_i=!1),c={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1},a(i).off("mousemove.vakata.jstree touchmove.vakata.jstree",a.vakata.dnd.drag),a(i).off("mouseup.vakata.jstree touchend.vakata.jstree",a.vakata.dnd.stop)},_scroll:function(b){if(!c.scroll_e||!c.scroll_l&&!c.scroll_t)return c.scroll_i&&(clearInterval(c.scroll_i),c.scroll_i=!1),!1;if(!c.scroll_i)return c.scroll_i=setInterval(a.vakata.dnd._scroll,100),!1;if(b===!0)return!1;var d=c.scroll_e.scrollTop(),e=c.scroll_e.scrollLeft();c.scroll_e.scrollTop(d+c.scroll_t*a.vakata.dnd.settings.scroll_speed),c.scroll_e.scrollLeft(e+c.scroll_l*a.vakata.dnd.settings.scroll_speed),(d!==c.scroll_e.scrollTop()||e!==c.scroll_e.scrollLeft())&&a.vakata.dnd._trigger("scroll",c.scroll_e)},start:function(b,d,e){"touchstart"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_drag&&a.vakata.dnd.stop({});try{b.currentTarget.unselectable="on",b.currentTarget.onselectstart=function(){return!1},b.currentTarget.style&&(b.currentTarget.style.touchAction="none",b.currentTarget.style.msTouchAction="none",b.currentTarget.style.MozUserSelect="none")}catch(f){}return c.init_x=b.pageX,c.init_y=b.pageY,c.data=d,c.is_down=!0,c.element=b.currentTarget,c.target=b.target,c.is_touch="touchstart"===b.type,e!==!1&&(c.helper=a("
        ").html(e).css({display:"block",margin:"0",padding:"0",position:"absolute",top:"-2000px",lineHeight:"16px",zIndex:"10000"})),a(i).on("mousemove.vakata.jstree touchmove.vakata.jstree",a.vakata.dnd.drag),a(i).on("mouseup.vakata.jstree touchend.vakata.jstree",a.vakata.dnd.stop),!1},drag:function(b){if("touchmove"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_down){if(!c.is_drag){if(!(Math.abs(b.pageX-c.init_x)>(c.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)||Math.abs(b.pageY-c.init_y)>(c.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)))return;c.helper&&(c.helper.appendTo("body"),c.helper_w=c.helper.outerWidth()),c.is_drag=!0,a(c.target).one("click.vakata",!1),a.vakata.dnd._trigger("start",b)}var d=!1,e=!1,f=!1,g=!1,h=!1,j=!1,k=!1,l=!1,m=!1,n=!1;return c.scroll_t=0,c.scroll_l=0,c.scroll_e=!1,a(a(b.target).parentsUntil("body").addBack().get().reverse()).filter(function(){return/^auto|scroll$/.test(a(this).css("overflow"))&&(this.scrollHeight>this.offsetHeight||this.scrollWidth>this.offsetWidth)}).each(function(){var d=a(this),e=d.offset();return this.scrollHeight>this.offsetHeight&&(e.top+d.height()-b.pageYthis.offsetWidth&&(e.left+d.width()-b.pageXg&&b.pageY-kg&&g-(b.pageY-k)j&&b.pageX-lj&&j-(b.pageX-l)f&&(m=f-50),h&&n+c.helper_w>h&&(n=h-(c.helper_w+2)),c.helper.css({left:n+"px",top:m+"px"})),a.vakata.dnd._trigger("move",b),!1}},stop:function(b){if("touchend"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_drag)b.target!==c.target&&a(c.target).off("click.vakata"),a.vakata.dnd._trigger("stop",b);else if("touchend"===b.type&&b.target===c.target){var d=setTimeout(function(){a(b.target).click()},100);a(b.target).one("click",function(){d&&clearTimeout(d)})}return a.vakata.dnd._clean(),!1}}}(a),a.jstree.defaults.massload=null,a.jstree.plugins.massload=function(b,c){this.init=function(a,b){this._data.massload={},c.init.call(this,a,b)},this._load_nodes=function(b,d,e,f){var g=this.settings.massload,h=JSON.stringify(b),i=[],j=this._model.data,k,l,m;if(!e){for(k=0,l=b.length;l>k;k++)(!j[b[k]]||!j[b[k]].state.loaded&&!j[b[k]].state.failed||f)&&(i.push(b[k]),m=this.get_node(b[k],!0),m&&m.length&&m.addClass("jstree-loading").attr("aria-busy",!0));if(this._data.massload={},i.length){if(a.isFunction(g))return g.call(this,i,a.proxy(function(a){var g,h;if(a)for(g in a)a.hasOwnProperty(g)&&(this._data.massload[g]=a[g]);for(g=0,h=b.length;h>g;g++)m=this.get_node(b[g],!0),m&&m.length&&m.removeClass("jstree-loading").attr("aria-busy",!1);c._load_nodes.call(this,b,d,e,f)},this));if("object"==typeof g&&g&&g.url)return g=a.extend(!0,{},g),a.isFunction(g.url)&&(g.url=g.url.call(this,i)),a.isFunction(g.data)&&(g.data=g.data.call(this,i)),a.ajax(g).done(a.proxy(function(a,g,h){var i,j;if(a)for(i in a)a.hasOwnProperty(i)&&(this._data.massload[i]=a[i]);for(i=0,j=b.length;j>i;i++)m=this.get_node(b[i],!0),m&&m.length&&m.removeClass("jstree-loading").attr("aria-busy",!1);c._load_nodes.call(this,b,d,e,f)},this)).fail(a.proxy(function(a){c._load_nodes.call(this,b,d,e,f)},this))}}return c._load_nodes.call(this,b,d,e,f)},this._load_node=function(b,d){var e=this._data.massload[b.id],f=null,g;return e?(f=this["string"==typeof e?"_append_html_data":"_append_json_data"](b,"string"==typeof e?a(a.parseHTML(e)).filter(function(){return 3!==this.nodeType}):e,function(a){d.call(this,a)}),g=this.get_node(b.id,!0),g&&g.length&&g.removeClass("jstree-loading").attr("aria-busy",!1),delete this._data.massload[b.id],f):c._load_node.call(this,b,d)}},a.jstree.defaults.search={ajax:!1,fuzzy:!1,case_sensitive:!1,show_only_matches:!1,show_only_matches_children:!1,close_opened_onclear:!0,search_leaves_only:!1,search_callback:!1},a.jstree.plugins.search=function(c,d){this.bind=function(){d.bind.call(this),this._data.search.str="",this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this._data.search.som=!1,this._data.search.smc=!1,this._data.search.hdn=[],this.element.on("search.jstree",a.proxy(function(b,c){if(this._data.search.som&&c.res.length){var d=this._model.data,e,f,g=[],h,i;for(e=0,f=c.res.length;f>e;e++)if(d[c.res[e]]&&!d[c.res[e]].state.hidden&&(g.push(c.res[e]),g=g.concat(d[c.res[e]].parents),this._data.search.smc))for(h=0,i=d[c.res[e]].children_d.length;i>h;h++)d[d[c.res[e]].children_d[h]]&&!d[d[c.res[e]].children_d[h]].state.hidden&&g.push(d[c.res[e]].children_d[h]);g=a.vakata.array_remove_item(a.vakata.array_unique(g),a.jstree.root),this._data.search.hdn=this.hide_all(!0),this.show_node(g,!0),this.redraw(!0)}},this)).on("clear_search.jstree",a.proxy(function(a,b){this._data.search.som&&b.res.length&&(this.show_node(this._data.search.hdn,!0),this.redraw(!0))},this))},this.search=function(c,d,e,f,g,h){if(c===!1||""===a.trim(c.toString()))return this.clear_search();f=this.get_node(f),f=f&&f.id?f.id:null,c=c.toString();var i=this.settings.search,j=i.ajax?i.ajax:!1,k=this._model.data,l=null,m=[],n=[],o,p;if(this._data.search.res.length&&!g&&this.clear_search(),e===b&&(e=i.show_only_matches),h===b&&(h=i.show_only_matches_children),!d&&j!==!1)return a.isFunction(j)?j.call(this,c,a.proxy(function(b){b&&b.d&&(b=b.d),this._load_nodes(a.isArray(b)?a.vakata.array_unique(b):[],function(){this.search(c,!0,e,f,g,h)})},this),f):(j=a.extend({},j),j.data||(j.data={}),j.data.str=c,f&&(j.data.inside=f),this._data.search.lastRequest&&this._data.search.lastRequest.abort(),this._data.search.lastRequest=a.ajax(j).fail(a.proxy(function(){this._data.core.last_error={error:"ajax",plugin:"search",id:"search_01",reason:"Could not load search parents",data:JSON.stringify(j)},this.settings.core.error.call(this,this._data.core.last_error)},this)).done(a.proxy(function(b){b&&b.d&&(b=b.d),this._load_nodes(a.isArray(b)?a.vakata.array_unique(b):[],function(){this.search(c,!0,e,f,g,h)})},this)),this._data.search.lastRequest);if(g||(this._data.search.str=c,this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this._data.search.som=e,this._data.search.smc=h),l=new a.vakata.search(c,!0,{caseSensitive:i.case_sensitive,fuzzy:i.fuzzy}),a.each(k[f?f:a.jstree.root].children_d,function(a,b){var d=k[b];d.text&&!d.state.hidden&&(!i.search_leaves_only||d.state.loaded&&0===d.children.length)&&(i.search_callback&&i.search_callback.call(this,c,d)||!i.search_callback&&l.search(d.text).isMatch)&&(m.push(b),n=n.concat(d.parents))}),m.length){for(n=a.vakata.array_unique(n),o=0,p=n.length;p>o;o++)n[o]!==a.jstree.root&&k[n[o]]&&this.open_node(n[o],null,0)===!0&&this._data.search.opn.push(n[o]);g?(this._data.search.dom=this._data.search.dom.add(a(this.element[0].querySelectorAll("#"+a.map(m,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #")))),this._data.search.res=a.vakata.array_unique(this._data.search.res.concat(m))):(this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(m,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.res=m),this._data.search.dom.children(".jstree-anchor").addClass("jstree-search")}this.trigger("search",{nodes:this._data.search.dom,str:c,res:this._data.search.res,show_only_matches:e})},this.clear_search=function(){this.settings.search.close_opened_onclear&&this.close_node(this._data.search.opn,0),this.trigger("clear_search",{nodes:this._data.search.dom,str:this._data.search.str,res:this._data.search.res}),this._data.search.res.length&&(this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(this._data.search.res,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.dom.children(".jstree-anchor").removeClass("jstree-search")),this._data.search.str="",this._data.search.res=[],this._data.search.opn=[],this._data.search.dom=a()},this.redraw_node=function(b,c,e,f){if(b=d.redraw_node.apply(this,arguments),b&&-1!==a.inArray(b.id,this._data.search.res)){var g,h,i=null;for(g=0,h=b.childNodes.length;h>g;g++)if(b.childNodes[g]&&b.childNodes[g].className&&-1!==b.childNodes[g].className.indexOf("jstree-anchor")){i=b.childNodes[g];break}i&&(i.className+=" jstree-search")}return b}},function(a){a.vakata.search=function(b,c,d){d=d||{},d=a.extend({},a.vakata.search.defaults,d),d.fuzzy!==!1&&(d.fuzzy=!0),b=d.caseSensitive?b:b.toLowerCase();var e=d.location,f=d.distance,g=d.threshold,h=b.length,i,j,k,l;return h>32&&(d.fuzzy=!1),d.fuzzy&&(i=1<c;c++)a[b.charAt(c)]=0;for(c=0;h>c;c++)a[b.charAt(c)]|=1<c;c++){o=0,p=q;while(p>o)k(c,e+p)<=m?o=p:q=p,p=Math.floor((q-o)/2+o);for(q=p,s=Math.max(1,e-p+1),t=Math.min(e+p,l)+h,u=new Array(t+2),u[t+1]=(1<=s;f--)if(v=j[a.charAt(f-1)],0===c?u[f]=(u[f+1]<<1|1)&v:u[f]=(u[f+1]<<1|1)&v|((r[f+1]|r[f])<<1|1)|r[f+1],u[f]&i&&(w=k(c,f-1),m>=w)){if(m=w,n=f-1,x.push(n),!(n>e))break;s=Math.max(1,2*e-n)}if(k(c+1,e)>m)break;r=u}return{isMatch:n>=0,score:w}},c===!0?{search:l}:l(c)},a.vakata.search.defaults={location:0,distance:100,threshold:.6,fuzzy:!1,caseSensitive:!1}}(a),a.jstree.defaults.sort=function(a,b){return this.get_text(a)>this.get_text(b)?1:-1},a.jstree.plugins.sort=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("model.jstree",a.proxy(function(a,b){this.sort(b.parent,!0)},this)).on("rename_node.jstree create_node.jstree",a.proxy(function(a,b){this.sort(b.parent||b.node.parent,!1),this.redraw_node(b.parent||b.node.parent,!0)},this)).on("move_node.jstree copy_node.jstree",a.proxy(function(a,b){this.sort(b.parent,!1),this.redraw_node(b.parent,!0)},this))},this.sort=function(b,c){var d,e;if(b=this.get_node(b),b&&b.children&&b.children.length&&(b.children.sort(a.proxy(this.settings.sort,this)),c))for(d=0,e=b.children_d.length;e>d;d++)this.sort(b.children_d[d],!1)}};var m=!1;a.jstree.defaults.state={key:"jstree",events:"changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree",ttl:!1,filter:!1},a.jstree.plugins.state=function(b,c){this.bind=function(){c.bind.call(this);var b=a.proxy(function(){this.element.on(this.settings.state.events,a.proxy(function(){m&&clearTimeout(m),m=setTimeout(a.proxy(function(){this.save_state()},this),100)},this)),this.trigger("state_ready")},this);this.element.on("ready.jstree",a.proxy(function(a,c){this.element.one("restore_state.jstree",b),this.restore_state()||b()},this))},this.save_state=function(){var b={state:this.get_state(),ttl:this.settings.state.ttl,sec:+new Date};a.vakata.storage.set(this.settings.state.key,JSON.stringify(b))},this.restore_state=function(){var b=a.vakata.storage.get(this.settings.state.key);if(b)try{b=JSON.parse(b)}catch(c){return!1}return b&&b.ttl&&b.sec&&+new Date-b.sec>b.ttl?!1:(b&&b.state&&(b=b.state),b&&a.isFunction(this.settings.state.filter)&&(b=this.settings.state.filter.call(this,b)),b?(this.element.one("set_state.jstree",function(c,d){d.instance.trigger("restore_state",{state:a.extend(!0,{},b)})}),this.set_state(b),!0):!1)},this.clear_state=function(){return a.vakata.storage.del(this.settings.state.key)}},function(a,b){a.vakata.storage={set:function(a,b){return window.localStorage.setItem(a,b)},get:function(a){return window.localStorage.getItem(a)},del:function(a){return window.localStorage.removeItem(a)}}}(a),a.jstree.defaults.types={"default":{}},a.jstree.defaults.types[a.jstree.root]={},a.jstree.plugins.types=function(c,d){this.init=function(c,e){var f,g;if(e&&e.types&&e.types["default"])for(f in e.types)if("default"!==f&&f!==a.jstree.root&&e.types.hasOwnProperty(f))for(g in e.types["default"])e.types["default"].hasOwnProperty(g)&&e.types[f][g]===b&&(e.types[f][g]=e.types["default"][g]);d.init.call(this,c,e),this._model.data[a.jstree.root].type=a.jstree.root},this.refresh=function(b,c){d.refresh.call(this,b,c),this._model.data[a.jstree.root].type=a.jstree.root},this.bind=function(){this.element.on("model.jstree",a.proxy(function(c,d){var e=this._model.data,f=d.nodes,g=this.settings.types,h,i,j="default",k;for(h=0,i=f.length;i>h;h++){if(j="default",e[f[h]].original&&e[f[h]].original.type&&g[e[f[h]].original.type]&&(j=e[f[h]].original.type),e[f[h]].data&&e[f[h]].data.jstree&&e[f[h]].data.jstree.type&&g[e[f[h]].data.jstree.type]&&(j=e[f[h]].data.jstree.type),e[f[h]].type=j,e[f[h]].icon===!0&&g[j].icon!==b&&(e[f[h]].icon=g[j].icon),g[j].li_attr!==b&&"object"==typeof g[j].li_attr)for(k in g[j].li_attr)if(g[j].li_attr.hasOwnProperty(k)){if("id"===k)continue;e[f[h]].li_attr[k]===b?e[f[h]].li_attr[k]=g[j].li_attr[k]:"class"===k&&(e[f[h]].li_attr["class"]=g[j].li_attr["class"]+" "+e[f[h]].li_attr["class"])}if(g[j].a_attr!==b&&"object"==typeof g[j].a_attr)for(k in g[j].a_attr)if(g[j].a_attr.hasOwnProperty(k)){if("id"===k)continue;e[f[h]].a_attr[k]===b?e[f[h]].a_attr[k]=g[j].a_attr[k]:"href"===k&&"#"===e[f[h]].a_attr[k]?e[f[h]].a_attr.href=g[j].a_attr.href:"class"===k&&(e[f[h]].a_attr["class"]=g[j].a_attr["class"]+" "+e[f[h]].a_attr["class"])}}e[a.jstree.root].type=a.jstree.root},this)),d.bind.call(this)},this.get_json=function(b,c,e){var f,g,h=this._model.data,i=c?a.extend(!0,{},c,{no_id:!1}):{},j=d.get_json.call(this,b,i,e);if(j===!1)return!1;if(a.isArray(j))for(f=0,g=j.length;g>f;f++)j[f].type=j[f].id&&h[j[f].id]&&h[j[f].id].type?h[j[f].id].type:"default",c&&c.no_id&&(delete j[f].id,j[f].li_attr&&j[f].li_attr.id&&delete j[f].li_attr.id,j[f].a_attr&&j[f].a_attr.id&&delete j[f].a_attr.id);else j.type=j.id&&h[j.id]&&h[j.id].type?h[j.id].type:"default",c&&c.no_id&&(j=this._delete_ids(j));return j},this._delete_ids=function(b){if(a.isArray(b)){for(var c=0,d=b.length;d>c;c++)b[c]=this._delete_ids(b[c]);return b}return delete b.id,b.li_attr&&b.li_attr.id&&delete b.li_attr.id,b.a_attr&&b.a_attr.id&&delete b.a_attr.id,b.children&&a.isArray(b.children)&&(b.children=this._delete_ids(b.children)),b},this.check=function(c,e,f,g,h){if(d.check.call(this,c,e,f,g,h)===!1)return!1;e=e&&e.id?e:this.get_node(e),f=f&&f.id?f:this.get_node(f);var i=e&&e.id?h&&h.origin?h.origin:a.jstree.reference(e.id):null,j,k,l,m;switch(i=i&&i._model&&i._model.data?i._model.data:null,c){case"create_node":case"move_node":case"copy_node":if("move_node"!==c||-1===a.inArray(e.id,f.children)){if(j=this.get_rules(f),j.max_children!==b&&-1!==j.max_children&&j.max_children===f.children.length)return this._data.core.last_error={error:"check",plugin:"types",id:"types_01",reason:"max_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(j.valid_children!==b&&-1!==j.valid_children&&-1===a.inArray(e.type||"default",j.valid_children))return this._data.core.last_error={error:"check",plugin:"types",id:"types_02",reason:"valid_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(i&&e.children_d&&e.parents){for(k=0,l=0,m=e.children_d.length;m>l;l++)k=Math.max(k,i[e.children_d[l]].parents.length);k=k-e.parents.length+1}(0>=k||k===b)&&(k=1);do{if(j.max_depth!==b&&-1!==j.max_depth&&j.max_depthg;g++)this.set_type(c[g],d);return!0}if(f=this.settings.types,c=this.get_node(c),!f[d]||!c)return!1;if(l=this.get_node(c,!0),l&&l.length&&(m=l.children(".jstree-anchor")),i=c.type,j=this.get_icon(c),c.type=d,(j===!0||!f[i]||f[i].icon!==b&&j===f[i].icon)&&this.set_icon(c,f[d].icon!==b?f[d].icon:!0),f[i]&&f[i].li_attr!==b&&"object"==typeof f[i].li_attr)for(k in f[i].li_attr)if(f[i].li_attr.hasOwnProperty(k)){if("id"===k)continue;"class"===k?(e[c.id].li_attr["class"]=(e[c.id].li_attr["class"]||"").replace(f[i].li_attr[k],""),l&&l.removeClass(f[i].li_attr[k])):e[c.id].li_attr[k]===f[i].li_attr[k]&&(e[c.id].li_attr[k]=null,l&&l.removeAttr(k))}if(f[i]&&f[i].a_attr!==b&&"object"==typeof f[i].a_attr)for(k in f[i].a_attr)if(f[i].a_attr.hasOwnProperty(k)){if("id"===k)continue;"class"===k?(e[c.id].a_attr["class"]=(e[c.id].a_attr["class"]||"").replace(f[i].a_attr[k],""),m&&m.removeClass(f[i].a_attr[k])):e[c.id].a_attr[k]===f[i].a_attr[k]&&("href"===k?(e[c.id].a_attr[k]="#",m&&m.attr("href","#")):(delete e[c.id].a_attr[k],m&&m.removeAttr(k)))}if(f[d].li_attr!==b&&"object"==typeof f[d].li_attr)for(k in f[d].li_attr)if(f[d].li_attr.hasOwnProperty(k)){if("id"===k)continue;e[c.id].li_attr[k]===b?(e[c.id].li_attr[k]=f[d].li_attr[k],l&&("class"===k?l.addClass(f[d].li_attr[k]):l.attr(k,f[d].li_attr[k]))):"class"===k&&(e[c.id].li_attr["class"]=f[d].li_attr[k]+" "+e[c.id].li_attr["class"],l&&l.addClass(f[d].li_attr[k]))}if(f[d].a_attr!==b&&"object"==typeof f[d].a_attr)for(k in f[d].a_attr)if(f[d].a_attr.hasOwnProperty(k)){if("id"===k)continue;e[c.id].a_attr[k]===b?(e[c.id].a_attr[k]=f[d].a_attr[k],m&&("class"===k?m.addClass(f[d].a_attr[k]):m.attr(k,f[d].a_attr[k]))):"href"===k&&"#"===e[c.id].a_attr[k]?(e[c.id].a_attr.href=f[d].a_attr.href,m&&m.attr("href",f[d].a_attr.href)):"class"===k&&(e[c.id].a_attr["class"]=f[d].a_attr["class"]+" "+e[c.id].a_attr["class"],m&&m.addClass(f[d].a_attr[k]))}return!0}},a.jstree.defaults.unique={case_sensitive:!1,duplicate:function(a,b){return a+" ("+b+")"}},a.jstree.plugins.unique=function(c,d){this.check=function(b,c,e,f,g){if(d.check.call(this,b,c,e,f,g)===!1)return!1; +if(c=c&&c.id?c:this.get_node(c),e=e&&e.id?e:this.get_node(e),!e||!e.children)return!0;var h="rename_node"===b?f:c.text,i=[],j=this.settings.unique.case_sensitive,k=this._model.data,l,m;for(l=0,m=e.children.length;m>l;l++)i.push(j?k[e.children[l]].text:k[e.children[l]].text.toLowerCase());switch(j||(h=h.toLowerCase()),b){case"delete_node":return!0;case"rename_node":return l=-1===a.inArray(h,i)||c.text&&c.text[j?"toString":"toLowerCase"]()===h,l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_01",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"create_node":return l=-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_04",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"copy_node":return l=-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_02",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"move_node":return l=c.parent===e.id&&(!g||!g.is_multi)||-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_03",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l}return!0},this.create_node=function(c,e,f,g,h){if(!e||e.text===b){if(null===c&&(c=a.jstree.root),c=this.get_node(c),!c)return d.create_node.call(this,c,e,f,g,h);if(f=f===b?"last":f,!f.toString().match(/^(before|after)$/)&&!h&&!this.is_loaded(c))return d.create_node.call(this,c,e,f,g,h);e||(e={});var i,j,k,l,m,n=this._model.data,o=this.settings.unique.case_sensitive,p=this.settings.unique.duplicate;for(j=i=this.get_string("New node"),k=[],l=0,m=c.children.length;m>l;l++)k.push(o?n[c.children[l]].text:n[c.children[l]].text.toLowerCase());l=1;while(-1!==a.inArray(o?j:j.toLowerCase(),k))j=p.call(this,i,++l).toString();e.text=j}return d.create_node.call(this,c,e,f,g,h)}};var n=i.createElement("DIV");if(n.setAttribute("unselectable","on"),n.setAttribute("role","presentation"),n.className="jstree-wholerow",n.innerHTML=" ",a.jstree.plugins.wholerow=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("ready.jstree set_state.jstree",a.proxy(function(){this.hide_dots()},this)).on("init.jstree loading.jstree ready.jstree",a.proxy(function(){this.get_container_ul().addClass("jstree-wholerow-ul")},this)).on("deselect_all.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked")},this)).on("changed.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked");var c=!1,d,e;for(d=0,e=b.selected.length;e>d;d++)c=this.get_node(b.selected[d],!0),c&&c.length&&c.children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("open_node.jstree",a.proxy(function(a,b){this.get_node(b.node,!0).find(".jstree-clicked").parent().children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("hover_node.jstree dehover_node.jstree",a.proxy(function(a,b){"hover_node"===a.type&&this.is_disabled(b.node)||this.get_node(b.node,!0).children(".jstree-wholerow")["hover_node"===a.type?"addClass":"removeClass"]("jstree-wholerow-hovered")},this)).on("contextmenu.jstree",".jstree-wholerow",a.proxy(function(b){if(this._data.contextmenu){b.preventDefault();var c=a.Event("contextmenu",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey,pageX:b.pageX,pageY:b.pageY});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c)}},this)).on("click.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("dblclick.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("dblclick",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("click.jstree",".jstree-leaf > .jstree-ocl",a.proxy(function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()},this)).on("mouseover.jstree",".jstree-wholerow, .jstree-icon",a.proxy(function(a){return a.stopImmediatePropagation(),this.is_disabled(a.currentTarget)||this.hover_node(a.currentTarget),!1},this)).on("mouseleave.jstree",".jstree-node",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},this.teardown=function(){this.settings.wholerow&&this.element.find(".jstree-wholerow").remove(),c.teardown.call(this)},this.redraw_node=function(b,d,e,f){if(b=c.redraw_node.apply(this,arguments)){var g=n.cloneNode(!0);-1!==a.inArray(b.id,this._data.core.selected)&&(g.className+=" jstree-wholerow-clicked"),this._data.core.focused&&this._data.core.focused===b.id&&(g.className+=" jstree-wholerow-hovered"),b.insertBefore(g,b.childNodes[0])}return b}},i.registerElement&&Object&&Object.create){var o=Object.create(HTMLElement.prototype);o.createdCallback=function(){var b={core:{},plugins:[]},c;for(c in a.jstree.plugins)a.jstree.plugins.hasOwnProperty(c)&&this.attributes[c]&&(b.plugins.push(c),this.getAttribute(c)&&JSON.parse(this.getAttribute(c))&&(b[c]=JSON.parse(this.getAttribute(c))));for(c in a.jstree.defaults.core)a.jstree.defaults.core.hasOwnProperty(c)&&this.attributes[c]&&(b.core[c]=JSON.parse(this.getAttribute(c))||this.getAttribute(c));a(this).jstree(b)};try{i.registerElement("vakata-jstree",{prototype:o})}catch(p){}}}}); \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/32px.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/32px.png new file mode 100644 index 0000000000..d6fd72114f Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/32px.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/40px.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/40px.png new file mode 100644 index 0000000000..4fc88e41e6 Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/40px.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/style.css b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/style.css new file mode 100644 index 0000000000..3af003f2d5 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/style.css @@ -0,0 +1,1146 @@ +/* jsTree default dark theme */ +.jstree-node, +.jstree-children, +.jstree-container-ul { + display: block; + margin: 0; + padding: 0; + list-style-type: none; + list-style-image: none; +} +.jstree-node { + white-space: nowrap; +} +.jstree-anchor { + display: inline-block; + color: black; + white-space: nowrap; + padding: 0 4px 0 1px; + margin: 0; + vertical-align: top; +} +.jstree-anchor:focus { + outline: 0; +} +.jstree-anchor, +.jstree-anchor:link, +.jstree-anchor:visited, +.jstree-anchor:hover, +.jstree-anchor:active { + text-decoration: none; + color: inherit; +} +.jstree-icon { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0; + vertical-align: top; + text-align: center; +} +.jstree-icon:empty { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0; + vertical-align: top; + text-align: center; +} +.jstree-ocl { + cursor: pointer; +} +.jstree-leaf > .jstree-ocl { + cursor: default; +} +.jstree .jstree-open > .jstree-children { + display: block; +} +.jstree .jstree-closed > .jstree-children, +.jstree .jstree-leaf > .jstree-children { + display: none; +} +.jstree-anchor > .jstree-themeicon { + margin-right: 2px; +} +.jstree-no-icons .jstree-themeicon, +.jstree-anchor > .jstree-themeicon-hidden { + display: none; +} +.jstree-hidden, +.jstree-node.jstree-hidden { + display: none; +} +.jstree-rtl .jstree-anchor { + padding: 0 1px 0 4px; +} +.jstree-rtl .jstree-anchor > .jstree-themeicon { + margin-left: 2px; + margin-right: 0; +} +.jstree-rtl .jstree-node { + margin-left: 0; +} +.jstree-rtl .jstree-container-ul > .jstree-node { + margin-right: 0; +} +.jstree-wholerow-ul { + position: relative; + display: inline-block; + min-width: 100%; +} +.jstree-wholerow-ul .jstree-leaf > .jstree-ocl { + cursor: pointer; +} +.jstree-wholerow-ul .jstree-anchor, +.jstree-wholerow-ul .jstree-icon { + position: relative; +} +.jstree-wholerow-ul .jstree-wholerow { + width: 100%; + cursor: pointer; + position: absolute; + left: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.vakata-context { + display: none; +} +.vakata-context, +.vakata-context ul { + margin: 0; + padding: 2px; + position: absolute; + background: #f5f5f5; + border: 1px solid #979797; + box-shadow: 2px 2px 2px #999999; +} +.vakata-context ul { + list-style: none; + left: 100%; + margin-top: -2.7em; + margin-left: -4px; +} +.vakata-context .vakata-context-right ul { + left: auto; + right: 100%; + margin-left: auto; + margin-right: -4px; +} +.vakata-context li { + list-style: none; +} +.vakata-context li > a { + display: block; + padding: 0 2em 0 2em; + text-decoration: none; + width: auto; + color: black; + white-space: nowrap; + line-height: 2.4em; + text-shadow: 1px 1px 0 white; + border-radius: 1px; +} +.vakata-context li > a:hover { + position: relative; + background-color: #e8eff7; + box-shadow: 0 0 2px #0a6aa1; +} +.vakata-context li > a.vakata-context-parent { + background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw=="); + background-position: right center; + background-repeat: no-repeat; +} +.vakata-context li > a:focus { + outline: 0; +} +.vakata-context .vakata-context-hover > a { + position: relative; + background-color: #e8eff7; + box-shadow: 0 0 2px #0a6aa1; +} +.vakata-context .vakata-context-separator > a, +.vakata-context .vakata-context-separator > a:hover { + background: white; + border: 0; + border-top: 1px solid #e2e3e3; + height: 1px; + min-height: 1px; + max-height: 1px; + padding: 0; + margin: 0 0 0 2.4em; + border-left: 1px solid #e0e0e0; + text-shadow: 0 0 0 transparent; + box-shadow: 0 0 0 transparent; + border-radius: 0; +} +.vakata-context .vakata-contextmenu-disabled a, +.vakata-context .vakata-contextmenu-disabled a:hover { + color: silver; + background-color: transparent; + border: 0; + box-shadow: 0 0 0; +} +.vakata-context li > a > i { + text-decoration: none; + display: inline-block; + width: 2.4em; + height: 2.4em; + background: transparent; + margin: 0 0 0 -2em; + vertical-align: top; + text-align: center; + line-height: 2.4em; +} +.vakata-context li > a > i:empty { + width: 2.4em; + line-height: 2.4em; +} +.vakata-context li > a .vakata-contextmenu-sep { + display: inline-block; + width: 1px; + height: 2.4em; + background: white; + margin: 0 0.5em 0 0; + border-left: 1px solid #e2e3e3; +} +.vakata-context .vakata-contextmenu-shortcut { + font-size: 0.8em; + color: silver; + opacity: 0.5; + display: none; +} +.vakata-context-rtl ul { + left: auto; + right: 100%; + margin-left: auto; + margin-right: -4px; +} +.vakata-context-rtl li > a.vakata-context-parent { + background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7"); + background-position: left center; + background-repeat: no-repeat; +} +.vakata-context-rtl .vakata-context-separator > a { + margin: 0 2.4em 0 0; + border-left: 0; + border-right: 1px solid #e2e3e3; +} +.vakata-context-rtl .vakata-context-left ul { + right: auto; + left: 100%; + margin-left: -4px; + margin-right: auto; +} +.vakata-context-rtl li > a > i { + margin: 0 -2em 0 0; +} +.vakata-context-rtl li > a .vakata-contextmenu-sep { + margin: 0 0 0 0.5em; + border-left-color: white; + background: #e2e3e3; +} +#jstree-marker { + position: absolute; + top: 0; + left: 0; + margin: -5px 0 0 0; + padding: 0; + border-right: 0; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid; + width: 0; + height: 0; + font-size: 0; + line-height: 0; +} +#jstree-dnd { + line-height: 16px; + margin: 0; + padding: 4px; +} +#jstree-dnd .jstree-icon, +#jstree-dnd .jstree-copy { + display: inline-block; + text-decoration: none; + margin: 0 2px 0 0; + padding: 0; + width: 16px; + height: 16px; +} +#jstree-dnd .jstree-ok { + background: green; +} +#jstree-dnd .jstree-er { + background: red; +} +#jstree-dnd .jstree-copy { + margin: 0 2px 0 2px; +} +.jstree-default-dark .jstree-node, +.jstree-default-dark .jstree-icon { + background-repeat: no-repeat; + background-color: transparent; +} +.jstree-default-dark .jstree-anchor, +.jstree-default-dark .jstree-animated, +.jstree-default-dark .jstree-wholerow { + transition: background-color 0.15s, box-shadow 0.15s; +} +.jstree-default-dark .jstree-hovered { + background: #555555; + border-radius: 2px; + box-shadow: inset 0 0 1px #555555; +} +.jstree-default-dark .jstree-context { + background: #555555; + border-radius: 2px; + box-shadow: inset 0 0 1px #555555; +} +.jstree-default-dark .jstree-clicked { + background: #5fa2db; + border-radius: 2px; + box-shadow: inset 0 0 1px #666666; +} +.jstree-default-dark .jstree-no-icons .jstree-anchor > .jstree-themeicon { + display: none; +} +.jstree-default-dark .jstree-disabled { + background: transparent; + color: #666666; +} +.jstree-default-dark .jstree-disabled.jstree-hovered { + background: transparent; + box-shadow: none; +} +.jstree-default-dark .jstree-disabled.jstree-clicked { + background: #333333; +} +.jstree-default-dark .jstree-disabled > .jstree-icon { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default-dark .jstree-search { + font-style: italic; + color: #ffffff; + font-weight: bold; +} +.jstree-default-dark .jstree-no-checkboxes .jstree-checkbox { + display: none !important; +} +.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked { + background: transparent; + box-shadow: none; +} +.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered { + background: #555555; +} +.jstree-default-dark.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked { + background: transparent; +} +.jstree-default-dark.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered { + background: #555555; +} +.jstree-default-dark > .jstree-striped { + min-width: 100%; + display: inline-block; + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat; +} +.jstree-default-dark > .jstree-wholerow-ul .jstree-hovered, +.jstree-default-dark > .jstree-wholerow-ul .jstree-clicked { + background: transparent; + box-shadow: none; + border-radius: 0; +} +.jstree-default-dark .jstree-wholerow { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.jstree-default-dark .jstree-wholerow-hovered { + background: #555555; +} +.jstree-default-dark .jstree-wholerow-clicked { + background: #5fa2db; + background: -webkit-linear-gradient(top, #5fa2db 0%, #5fa2db 100%); + background: linear-gradient(to bottom, #5fa2db 0%, #5fa2db 100%); +} +.jstree-default-dark .jstree-node { + min-height: 24px; + line-height: 24px; + margin-left: 24px; + min-width: 24px; +} +.jstree-default-dark .jstree-anchor { + line-height: 24px; + height: 24px; +} +.jstree-default-dark .jstree-icon { + width: 24px; + height: 24px; + line-height: 24px; +} +.jstree-default-dark .jstree-icon:empty { + width: 24px; + height: 24px; + line-height: 24px; +} +.jstree-default-dark.jstree-rtl .jstree-node { + margin-right: 24px; +} +.jstree-default-dark .jstree-wholerow { + height: 24px; +} +.jstree-default-dark .jstree-node, +.jstree-default-dark .jstree-icon { + background-image: url("32px.png"); +} +.jstree-default-dark .jstree-node { + background-position: -292px -4px; + background-repeat: repeat-y; +} +.jstree-default-dark .jstree-last { + background: transparent; +} +.jstree-default-dark .jstree-open > .jstree-ocl { + background-position: -132px -4px; +} +.jstree-default-dark .jstree-closed > .jstree-ocl { + background-position: -100px -4px; +} +.jstree-default-dark .jstree-leaf > .jstree-ocl { + background-position: -68px -4px; +} +.jstree-default-dark .jstree-themeicon { + background-position: -260px -4px; +} +.jstree-default-dark > .jstree-no-dots .jstree-node, +.jstree-default-dark > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-dark > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -36px -4px; +} +.jstree-default-dark > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -4px -4px; +} +.jstree-default-dark .jstree-disabled { + background: transparent; +} +.jstree-default-dark .jstree-disabled.jstree-hovered { + background: transparent; +} +.jstree-default-dark .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default-dark .jstree-checkbox { + background-position: -164px -4px; +} +.jstree-default-dark .jstree-checkbox:hover { + background-position: -164px -36px; +} +.jstree-default-dark.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, +.jstree-default-dark .jstree-checked > .jstree-checkbox { + background-position: -228px -4px; +} +.jstree-default-dark.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, +.jstree-default-dark .jstree-checked > .jstree-checkbox:hover { + background-position: -228px -36px; +} +.jstree-default-dark .jstree-anchor > .jstree-undetermined { + background-position: -196px -4px; +} +.jstree-default-dark .jstree-anchor > .jstree-undetermined:hover { + background-position: -196px -36px; +} +.jstree-default-dark .jstree-checkbox-disabled { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default-dark > .jstree-striped { + background-size: auto 48px; +} +.jstree-default-dark.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); + background-position: 100% 1px; + background-repeat: repeat-y; +} +.jstree-default-dark.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark.jstree-rtl .jstree-open > .jstree-ocl { + background-position: -132px -36px; +} +.jstree-default-dark.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -100px -36px; +} +.jstree-default-dark.jstree-rtl .jstree-leaf > .jstree-ocl { + background-position: -68px -36px; +} +.jstree-default-dark.jstree-rtl > .jstree-no-dots .jstree-node, +.jstree-default-dark.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-dark.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -36px -36px; +} +.jstree-default-dark.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -4px -36px; +} +.jstree-default-dark .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; +} +.jstree-default-dark > .jstree-container-ul .jstree-loading > .jstree-ocl { + background: url("throbber.gif") center center no-repeat; +} +.jstree-default-dark .jstree-file { + background: url("32px.png") -100px -68px no-repeat; +} +.jstree-default-dark .jstree-folder { + background: url("32px.png") -260px -4px no-repeat; +} +.jstree-default-dark > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; +} +#jstree-dnd.jstree-default-dark { + line-height: 24px; + padding: 0 4px; +} +#jstree-dnd.jstree-default-dark .jstree-ok, +#jstree-dnd.jstree-default-dark .jstree-er { + background-image: url("32px.png"); + background-repeat: no-repeat; + background-color: transparent; +} +#jstree-dnd.jstree-default-dark i { + background: transparent; + width: 24px; + height: 24px; + line-height: 24px; +} +#jstree-dnd.jstree-default-dark .jstree-ok { + background-position: -4px -68px; +} +#jstree-dnd.jstree-default-dark .jstree-er { + background-position: -36px -68px; +} +.jstree-default-dark .jstree-ellipsis { + overflow: hidden; +} +.jstree-default-dark .jstree-ellipsis .jstree-anchor { + width: calc(100% - 29px); + text-overflow: ellipsis; + overflow: hidden; +} +.jstree-default-dark .jstree-ellipsis.jstree-no-icons .jstree-anchor { + width: calc(100% - 5px); +} +.jstree-default-dark.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); +} +.jstree-default-dark.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark-small .jstree-node { + min-height: 18px; + line-height: 18px; + margin-left: 18px; + min-width: 18px; +} +.jstree-default-dark-small .jstree-anchor { + line-height: 18px; + height: 18px; +} +.jstree-default-dark-small .jstree-icon { + width: 18px; + height: 18px; + line-height: 18px; +} +.jstree-default-dark-small .jstree-icon:empty { + width: 18px; + height: 18px; + line-height: 18px; +} +.jstree-default-dark-small.jstree-rtl .jstree-node { + margin-right: 18px; +} +.jstree-default-dark-small .jstree-wholerow { + height: 18px; +} +.jstree-default-dark-small .jstree-node, +.jstree-default-dark-small .jstree-icon { + background-image: url("32px.png"); +} +.jstree-default-dark-small .jstree-node { + background-position: -295px -7px; + background-repeat: repeat-y; +} +.jstree-default-dark-small .jstree-last { + background: transparent; +} +.jstree-default-dark-small .jstree-open > .jstree-ocl { + background-position: -135px -7px; +} +.jstree-default-dark-small .jstree-closed > .jstree-ocl { + background-position: -103px -7px; +} +.jstree-default-dark-small .jstree-leaf > .jstree-ocl { + background-position: -71px -7px; +} +.jstree-default-dark-small .jstree-themeicon { + background-position: -263px -7px; +} +.jstree-default-dark-small > .jstree-no-dots .jstree-node, +.jstree-default-dark-small > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-dark-small > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -39px -7px; +} +.jstree-default-dark-small > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -7px -7px; +} +.jstree-default-dark-small .jstree-disabled { + background: transparent; +} +.jstree-default-dark-small .jstree-disabled.jstree-hovered { + background: transparent; +} +.jstree-default-dark-small .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default-dark-small .jstree-checkbox { + background-position: -167px -7px; +} +.jstree-default-dark-small .jstree-checkbox:hover { + background-position: -167px -39px; +} +.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, +.jstree-default-dark-small .jstree-checked > .jstree-checkbox { + background-position: -231px -7px; +} +.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, +.jstree-default-dark-small .jstree-checked > .jstree-checkbox:hover { + background-position: -231px -39px; +} +.jstree-default-dark-small .jstree-anchor > .jstree-undetermined { + background-position: -199px -7px; +} +.jstree-default-dark-small .jstree-anchor > .jstree-undetermined:hover { + background-position: -199px -39px; +} +.jstree-default-dark-small .jstree-checkbox-disabled { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default-dark-small > .jstree-striped { + background-size: auto 36px; +} +.jstree-default-dark-small.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); + background-position: 100% 1px; + background-repeat: repeat-y; +} +.jstree-default-dark-small.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark-small.jstree-rtl .jstree-open > .jstree-ocl { + background-position: -135px -39px; +} +.jstree-default-dark-small.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -103px -39px; +} +.jstree-default-dark-small.jstree-rtl .jstree-leaf > .jstree-ocl { + background-position: -71px -39px; +} +.jstree-default-dark-small.jstree-rtl > .jstree-no-dots .jstree-node, +.jstree-default-dark-small.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-dark-small.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -39px -39px; +} +.jstree-default-dark-small.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -7px -39px; +} +.jstree-default-dark-small .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; +} +.jstree-default-dark-small > .jstree-container-ul .jstree-loading > .jstree-ocl { + background: url("throbber.gif") center center no-repeat; +} +.jstree-default-dark-small .jstree-file { + background: url("32px.png") -103px -71px no-repeat; +} +.jstree-default-dark-small .jstree-folder { + background: url("32px.png") -263px -7px no-repeat; +} +.jstree-default-dark-small > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; +} +#jstree-dnd.jstree-default-dark-small { + line-height: 18px; + padding: 0 4px; +} +#jstree-dnd.jstree-default-dark-small .jstree-ok, +#jstree-dnd.jstree-default-dark-small .jstree-er { + background-image: url("32px.png"); + background-repeat: no-repeat; + background-color: transparent; +} +#jstree-dnd.jstree-default-dark-small i { + background: transparent; + width: 18px; + height: 18px; + line-height: 18px; +} +#jstree-dnd.jstree-default-dark-small .jstree-ok { + background-position: -7px -71px; +} +#jstree-dnd.jstree-default-dark-small .jstree-er { + background-position: -39px -71px; +} +.jstree-default-dark-small .jstree-ellipsis { + overflow: hidden; +} +.jstree-default-dark-small .jstree-ellipsis .jstree-anchor { + width: calc(100% - 23px); + text-overflow: ellipsis; + overflow: hidden; +} +.jstree-default-dark-small .jstree-ellipsis.jstree-no-icons .jstree-anchor { + width: calc(100% - 5px); +} +.jstree-default-dark-small.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); +} +.jstree-default-dark-small.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark-large .jstree-node { + min-height: 32px; + line-height: 32px; + margin-left: 32px; + min-width: 32px; +} +.jstree-default-dark-large .jstree-anchor { + line-height: 32px; + height: 32px; +} +.jstree-default-dark-large .jstree-icon { + width: 32px; + height: 32px; + line-height: 32px; +} +.jstree-default-dark-large .jstree-icon:empty { + width: 32px; + height: 32px; + line-height: 32px; +} +.jstree-default-dark-large.jstree-rtl .jstree-node { + margin-right: 32px; +} +.jstree-default-dark-large .jstree-wholerow { + height: 32px; +} +.jstree-default-dark-large .jstree-node, +.jstree-default-dark-large .jstree-icon { + background-image: url("32px.png"); +} +.jstree-default-dark-large .jstree-node { + background-position: -288px 0px; + background-repeat: repeat-y; +} +.jstree-default-dark-large .jstree-last { + background: transparent; +} +.jstree-default-dark-large .jstree-open > .jstree-ocl { + background-position: -128px 0px; +} +.jstree-default-dark-large .jstree-closed > .jstree-ocl { + background-position: -96px 0px; +} +.jstree-default-dark-large .jstree-leaf > .jstree-ocl { + background-position: -64px 0px; +} +.jstree-default-dark-large .jstree-themeicon { + background-position: -256px 0px; +} +.jstree-default-dark-large > .jstree-no-dots .jstree-node, +.jstree-default-dark-large > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-dark-large > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -32px 0px; +} +.jstree-default-dark-large > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: 0px 0px; +} +.jstree-default-dark-large .jstree-disabled { + background: transparent; +} +.jstree-default-dark-large .jstree-disabled.jstree-hovered { + background: transparent; +} +.jstree-default-dark-large .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default-dark-large .jstree-checkbox { + background-position: -160px 0px; +} +.jstree-default-dark-large .jstree-checkbox:hover { + background-position: -160px -32px; +} +.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, +.jstree-default-dark-large .jstree-checked > .jstree-checkbox { + background-position: -224px 0px; +} +.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, +.jstree-default-dark-large .jstree-checked > .jstree-checkbox:hover { + background-position: -224px -32px; +} +.jstree-default-dark-large .jstree-anchor > .jstree-undetermined { + background-position: -192px 0px; +} +.jstree-default-dark-large .jstree-anchor > .jstree-undetermined:hover { + background-position: -192px -32px; +} +.jstree-default-dark-large .jstree-checkbox-disabled { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default-dark-large > .jstree-striped { + background-size: auto 64px; +} +.jstree-default-dark-large.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); + background-position: 100% 1px; + background-repeat: repeat-y; +} +.jstree-default-dark-large.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark-large.jstree-rtl .jstree-open > .jstree-ocl { + background-position: -128px -32px; +} +.jstree-default-dark-large.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -96px -32px; +} +.jstree-default-dark-large.jstree-rtl .jstree-leaf > .jstree-ocl { + background-position: -64px -32px; +} +.jstree-default-dark-large.jstree-rtl > .jstree-no-dots .jstree-node, +.jstree-default-dark-large.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-dark-large.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -32px -32px; +} +.jstree-default-dark-large.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: 0px -32px; +} +.jstree-default-dark-large .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; +} +.jstree-default-dark-large > .jstree-container-ul .jstree-loading > .jstree-ocl { + background: url("throbber.gif") center center no-repeat; +} +.jstree-default-dark-large .jstree-file { + background: url("32px.png") -96px -64px no-repeat; +} +.jstree-default-dark-large .jstree-folder { + background: url("32px.png") -256px 0px no-repeat; +} +.jstree-default-dark-large > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; +} +#jstree-dnd.jstree-default-dark-large { + line-height: 32px; + padding: 0 4px; +} +#jstree-dnd.jstree-default-dark-large .jstree-ok, +#jstree-dnd.jstree-default-dark-large .jstree-er { + background-image: url("32px.png"); + background-repeat: no-repeat; + background-color: transparent; +} +#jstree-dnd.jstree-default-dark-large i { + background: transparent; + width: 32px; + height: 32px; + line-height: 32px; +} +#jstree-dnd.jstree-default-dark-large .jstree-ok { + background-position: 0px -64px; +} +#jstree-dnd.jstree-default-dark-large .jstree-er { + background-position: -32px -64px; +} +.jstree-default-dark-large .jstree-ellipsis { + overflow: hidden; +} +.jstree-default-dark-large .jstree-ellipsis .jstree-anchor { + width: calc(100% - 37px); + text-overflow: ellipsis; + overflow: hidden; +} +.jstree-default-dark-large .jstree-ellipsis.jstree-no-icons .jstree-anchor { + width: calc(100% - 5px); +} +.jstree-default-dark-large.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); +} +.jstree-default-dark-large.jstree-rtl .jstree-last { + background: transparent; +} +@media (max-width: 768px) { + #jstree-dnd.jstree-dnd-responsive { + line-height: 40px; + font-weight: bold; + font-size: 1.1em; + text-shadow: 1px 1px white; + } + #jstree-dnd.jstree-dnd-responsive > i { + background: transparent; + width: 40px; + height: 40px; + } + #jstree-dnd.jstree-dnd-responsive > .jstree-ok { + background-image: url("40px.png"); + background-position: 0 -200px; + background-size: 120px 240px; + } + #jstree-dnd.jstree-dnd-responsive > .jstree-er { + background-image: url("40px.png"); + background-position: -40px -200px; + background-size: 120px 240px; + } + #jstree-marker.jstree-dnd-responsive { + border-left-width: 10px; + border-top-width: 10px; + border-bottom-width: 10px; + margin-top: -10px; + } +} +@media (max-width: 768px) { + .jstree-default-dark-responsive { + /* + .jstree-open > .jstree-ocl, + .jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; } + */ + } + .jstree-default-dark-responsive .jstree-icon { + background-image: url("40px.png"); + } + .jstree-default-dark-responsive .jstree-node, + .jstree-default-dark-responsive .jstree-leaf > .jstree-ocl { + background: transparent; + } + .jstree-default-dark-responsive .jstree-node { + min-height: 40px; + line-height: 40px; + margin-left: 40px; + min-width: 40px; + white-space: nowrap; + } + .jstree-default-dark-responsive .jstree-anchor { + line-height: 40px; + height: 40px; + } + .jstree-default-dark-responsive .jstree-icon, + .jstree-default-dark-responsive .jstree-icon:empty { + width: 40px; + height: 40px; + line-height: 40px; + } + .jstree-default-dark-responsive > .jstree-container-ul > .jstree-node { + margin-left: 0; + } + .jstree-default-dark-responsive.jstree-rtl .jstree-node { + margin-left: 0; + margin-right: 40px; + background: transparent; + } + .jstree-default-dark-responsive.jstree-rtl .jstree-container-ul > .jstree-node { + margin-right: 0; + } + .jstree-default-dark-responsive .jstree-ocl, + .jstree-default-dark-responsive .jstree-themeicon, + .jstree-default-dark-responsive .jstree-checkbox { + background-size: 120px 240px; + } + .jstree-default-dark-responsive .jstree-leaf > .jstree-ocl, + .jstree-default-dark-responsive.jstree-rtl .jstree-leaf > .jstree-ocl { + background: transparent; + } + .jstree-default-dark-responsive .jstree-open > .jstree-ocl { + background-position: 0 0px !important; + } + .jstree-default-dark-responsive .jstree-closed > .jstree-ocl { + background-position: 0 -40px !important; + } + .jstree-default-dark-responsive.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -40px 0px !important; + } + .jstree-default-dark-responsive .jstree-themeicon { + background-position: -40px -40px; + } + .jstree-default-dark-responsive .jstree-checkbox, + .jstree-default-dark-responsive .jstree-checkbox:hover { + background-position: -40px -80px; + } + .jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, + .jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, + .jstree-default-dark-responsive .jstree-checked > .jstree-checkbox, + .jstree-default-dark-responsive .jstree-checked > .jstree-checkbox:hover { + background-position: 0 -80px; + } + .jstree-default-dark-responsive .jstree-anchor > .jstree-undetermined, + .jstree-default-dark-responsive .jstree-anchor > .jstree-undetermined:hover { + background-position: 0 -120px; + } + .jstree-default-dark-responsive .jstree-anchor { + font-weight: bold; + font-size: 1.1em; + text-shadow: 1px 1px white; + } + .jstree-default-dark-responsive > .jstree-striped { + background: transparent; + } + .jstree-default-dark-responsive .jstree-wholerow { + border-top: 1px solid #666666; + border-bottom: 1px solid #000000; + background: #333333; + height: 40px; + } + .jstree-default-dark-responsive .jstree-wholerow-hovered { + background: #555555; + } + .jstree-default-dark-responsive .jstree-wholerow-clicked { + background: #5fa2db; + } + .jstree-default-dark-responsive .jstree-children .jstree-last > .jstree-wholerow { + box-shadow: inset 0 -6px 3px -5px #111111; + } + .jstree-default-dark-responsive .jstree-children .jstree-open > .jstree-wholerow { + box-shadow: inset 0 6px 3px -5px #111111; + border-top: 0; + } + .jstree-default-dark-responsive .jstree-children .jstree-open + .jstree-open { + box-shadow: none; + } + .jstree-default-dark-responsive .jstree-node, + .jstree-default-dark-responsive .jstree-icon, + .jstree-default-dark-responsive .jstree-node > .jstree-ocl, + .jstree-default-dark-responsive .jstree-themeicon, + .jstree-default-dark-responsive .jstree-checkbox { + background-image: url("40px.png"); + background-size: 120px 240px; + } + .jstree-default-dark-responsive .jstree-node { + background-position: -80px 0; + background-repeat: repeat-y; + } + .jstree-default-dark-responsive .jstree-last { + background: transparent; + } + .jstree-default-dark-responsive .jstree-leaf > .jstree-ocl { + background-position: -40px -120px; + } + .jstree-default-dark-responsive .jstree-last > .jstree-ocl { + background-position: -40px -160px; + } + .jstree-default-dark-responsive .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; + } + .jstree-default-dark-responsive .jstree-file { + background: url("40px.png") 0 -160px no-repeat; + background-size: 120px 240px; + } + .jstree-default-dark-responsive .jstree-folder { + background: url("40px.png") -40px -40px no-repeat; + background-size: 120px 240px; + } + .jstree-default-dark-responsive > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; + } +} +.jstree-default-dark { + background: #333; +} +.jstree-default-dark .jstree-anchor { + color: #999; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5); +} +.jstree-default-dark .jstree-clicked, +.jstree-default-dark .jstree-checked { + color: white; +} +.jstree-default-dark .jstree-hovered { + color: white; +} +#jstree-marker.jstree-default-dark { + border-left-color: #999; + background: transparent; +} +.jstree-default-dark .jstree-anchor > .jstree-icon { + opacity: 0.75; +} +.jstree-default-dark .jstree-clicked > .jstree-icon, +.jstree-default-dark .jstree-hovered > .jstree-icon, +.jstree-default-dark .jstree-checked > .jstree-icon { + opacity: 1; +} +.jstree-default-dark.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); +} +.jstree-default-dark.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark-small.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); +} +.jstree-default-dark-small.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark-large.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); +} +.jstree-default-dark-large.jstree-rtl .jstree-last { + background: transparent; +} diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/style.min.css b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/style.min.css new file mode 100644 index 0000000000..d9084d403c --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/style.min.css @@ -0,0 +1 @@ +.jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 #fff;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7);background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-icon,#jstree-dnd .jstree-copy{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px}.jstree-default-dark .jstree-node,.jstree-default-dark .jstree-icon{background-repeat:no-repeat;background-color:transparent}.jstree-default-dark .jstree-anchor,.jstree-default-dark .jstree-animated,.jstree-default-dark .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default-dark .jstree-hovered{background:#555;border-radius:2px;box-shadow:inset 0 0 1px #555}.jstree-default-dark .jstree-context{background:#555;border-radius:2px;box-shadow:inset 0 0 1px #555}.jstree-default-dark .jstree-clicked{background:#5fa2db;border-radius:2px;box-shadow:inset 0 0 1px #666}.jstree-default-dark .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default-dark .jstree-disabled{background:0 0;color:#666}.jstree-default-dark .jstree-disabled.jstree-hovered{background:0 0;box-shadow:none}.jstree-default-dark .jstree-disabled.jstree-clicked{background:#333}.jstree-default-dark .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark .jstree-search{font-style:italic;color:#fff;font-weight:700}.jstree-default-dark .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked{background:0 0;box-shadow:none}.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#555}.jstree-default-dark.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:0 0}.jstree-default-dark.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#555}.jstree-default-dark>.jstree-striped{min-width:100%;display:inline-block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==) left top repeat}.jstree-default-dark>.jstree-wholerow-ul .jstree-hovered,.jstree-default-dark>.jstree-wholerow-ul .jstree-clicked{background:0 0;box-shadow:none;border-radius:0}.jstree-default-dark .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default-dark .jstree-wholerow-hovered{background:#555}.jstree-default-dark .jstree-wholerow-clicked{background:#5fa2db;background:-webkit-linear-gradient(top,#5fa2db 0,#5fa2db 100%);background:linear-gradient(to bottom,#5fa2db 0,#5fa2db 100%)}.jstree-default-dark .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default-dark .jstree-anchor{line-height:24px;height:24px}.jstree-default-dark .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default-dark .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default-dark.jstree-rtl .jstree-node{margin-right:24px}.jstree-default-dark .jstree-wholerow{height:24px}.jstree-default-dark .jstree-node,.jstree-default-dark .jstree-icon{background-image:url(32px.png)}.jstree-default-dark .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default-dark .jstree-last{background:0 0}.jstree-default-dark .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default-dark .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default-dark .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default-dark .jstree-themeicon{background-position:-260px -4px}.jstree-default-dark>.jstree-no-dots .jstree-node,.jstree-default-dark>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default-dark>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default-dark .jstree-disabled{background:0 0}.jstree-default-dark .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-dark .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-dark .jstree-checkbox{background-position:-164px -4px}.jstree-default-dark .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default-dark.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default-dark.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default-dark .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default-dark .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default-dark .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark>.jstree-striped{background-size:auto 48px}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-dark.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default-dark.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default-dark.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default-dark .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-dark .jstree-file{background:url(32px.png) -100px -68px no-repeat}.jstree-default-dark .jstree-folder{background:url(32px.png) -260px -4px no-repeat}.jstree-default-dark>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-dark{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default-dark .jstree-ok,#jstree-dnd.jstree-default-dark .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-dark i{background:0 0;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default-dark .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default-dark .jstree-er{background-position:-36px -68px}.jstree-default-dark .jstree-ellipsis{overflow:hidden}.jstree-default-dark .jstree-ellipsis .jstree-anchor{width:calc(100% - 29px);text-overflow:ellipsis;overflow:hidden}.jstree-default-dark .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default-dark.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-dark-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-dark-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-dark-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-dark-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-dark-small .jstree-wholerow{height:18px}.jstree-default-dark-small .jstree-node,.jstree-default-dark-small .jstree-icon{background-image:url(32px.png)}.jstree-default-dark-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-dark-small .jstree-last{background:0 0}.jstree-default-dark-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-dark-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-dark-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-dark-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-dark-small>.jstree-no-dots .jstree-node,.jstree-default-dark-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-dark-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-dark-small .jstree-disabled{background:0 0}.jstree-default-dark-small .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-dark-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-dark-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-dark-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-dark-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-dark-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-dark-small .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark-small>.jstree-striped{background-size:auto 36px}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-dark-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-dark-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-dark-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-dark-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-dark-small .jstree-file{background:url(32px.png) -103px -71px no-repeat}.jstree-default-dark-small .jstree-folder{background:url(32px.png) -263px -7px no-repeat}.jstree-default-dark-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-dark-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-dark-small .jstree-ok,#jstree-dnd.jstree-default-dark-small .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-dark-small i{background:0 0;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-dark-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-dark-small .jstree-er{background-position:-39px -71px}.jstree-default-dark-small .jstree-ellipsis{overflow:hidden}.jstree-default-dark-small .jstree-ellipsis .jstree-anchor{width:calc(100% - 23px);text-overflow:ellipsis;overflow:hidden}.jstree-default-dark-small .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-dark-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-dark-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-dark-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-dark-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-dark-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-dark-large .jstree-wholerow{height:32px}.jstree-default-dark-large .jstree-node,.jstree-default-dark-large .jstree-icon{background-image:url(32px.png)}.jstree-default-dark-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-dark-large .jstree-last{background:0 0}.jstree-default-dark-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-dark-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-dark-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-dark-large .jstree-themeicon{background-position:-256px 0}.jstree-default-dark-large>.jstree-no-dots .jstree-node,.jstree-default-dark-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-dark-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-dark-large .jstree-disabled{background:0 0}.jstree-default-dark-large .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-dark-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-dark-large .jstree-checkbox{background-position:-160px 0}.jstree-default-dark-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-dark-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-dark-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-dark-large .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark-large>.jstree-striped{background-size:auto 64px}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-dark-large.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-dark-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-dark-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-dark-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-dark-large .jstree-file{background:url(32px.png) -96px -64px no-repeat}.jstree-default-dark-large .jstree-folder{background:url(32px.png) -256px 0 no-repeat}.jstree-default-dark-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-dark-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-dark-large .jstree-ok,#jstree-dnd.jstree-default-dark-large .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-dark-large i{background:0 0;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-dark-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-dark-large .jstree-er{background-position:-32px -64px}.jstree-default-dark-large .jstree-ellipsis{overflow:hidden}.jstree-default-dark-large .jstree-ellipsis .jstree-anchor{width:calc(100% - 37px);text-overflow:ellipsis;overflow:hidden}.jstree-default-dark-large .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-dark-large.jstree-rtl .jstree-last{background:0 0}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:0 0;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(40px.png);background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url(40px.png);background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-dark-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-dark-responsive .jstree-node,.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-dark-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-dark-responsive .jstree-icon,.jstree-default-dark-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-dark-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-dark-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px;background:0 0}.jstree-default-dark-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-dark-responsive .jstree-ocl,.jstree-default-dark-responsive .jstree-themeicon,.jstree-default-dark-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl,.jstree-default-dark-responsive.jstree-rtl .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-dark-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-dark-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-dark-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-dark-responsive .jstree-checkbox,.jstree-default-dark-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-responsive .jstree-checked>.jstree-checkbox,.jstree-default-dark-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-dark-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-dark-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-dark-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-dark-responsive>.jstree-striped{background:0 0}.jstree-default-dark-responsive .jstree-wholerow{border-top:1px solid #666;border-bottom:1px solid #000;background:#333;height:40px}.jstree-default-dark-responsive .jstree-wholerow-hovered{background:#555}.jstree-default-dark-responsive .jstree-wholerow-clicked{background:#5fa2db}.jstree-default-dark-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #111}.jstree-default-dark-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #111;border-top:0}.jstree-default-dark-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-dark-responsive .jstree-node,.jstree-default-dark-responsive .jstree-icon,.jstree-default-dark-responsive .jstree-node>.jstree-ocl,.jstree-default-dark-responsive .jstree-themeicon,.jstree-default-dark-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-dark-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-dark-responsive .jstree-last{background:0 0}.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-dark-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-dark-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-dark-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-dark-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}}.jstree-default-dark{background:#333}.jstree-default-dark .jstree-anchor{color:#999;text-shadow:1px 1px 0 rgba(0,0,0,.5)}.jstree-default-dark .jstree-clicked,.jstree-default-dark .jstree-checked{color:#fff}.jstree-default-dark .jstree-hovered{color:#fff}#jstree-marker.jstree-default-dark{border-left-color:#999;background:0 0}.jstree-default-dark .jstree-anchor>.jstree-icon{opacity:.75}.jstree-default-dark .jstree-clicked>.jstree-icon,.jstree-default-dark .jstree-hovered>.jstree-icon,.jstree-default-dark .jstree-checked>.jstree-icon{opacity:1}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default-dark.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-dark-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-dark-large.jstree-rtl .jstree-last{background:0 0} \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/throbber.gif b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/throbber.gif new file mode 100644 index 0000000000..cd75035ce8 Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default-dark/throbber.gif differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/32px.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/32px.png new file mode 100644 index 0000000000..1532715248 Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/32px.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/40px.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/40px.png new file mode 100644 index 0000000000..1959347aea Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/40px.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/style.css b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/style.css new file mode 100644 index 0000000000..616be241be --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/style.css @@ -0,0 +1,1102 @@ +/* jsTree default theme */ +.jstree-node, +.jstree-children, +.jstree-container-ul { + display: block; + margin: 0; + padding: 0; + list-style-type: none; + list-style-image: none; +} +.jstree-node { + white-space: nowrap; +} +.jstree-anchor { + display: inline-block; + color: black; + white-space: nowrap; + padding: 0 4px 0 1px; + margin: 0; + vertical-align: top; +} +.jstree-anchor:focus { + outline: 0; +} +.jstree-anchor, +.jstree-anchor:link, +.jstree-anchor:visited, +.jstree-anchor:hover, +.jstree-anchor:active { + text-decoration: none; + color: inherit; +} +.jstree-icon { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0; + vertical-align: top; + text-align: center; +} +.jstree-icon:empty { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0; + vertical-align: top; + text-align: center; +} +.jstree-ocl { + cursor: pointer; +} +.jstree-leaf > .jstree-ocl { + cursor: default; +} +.jstree .jstree-open > .jstree-children { + display: block; +} +.jstree .jstree-closed > .jstree-children, +.jstree .jstree-leaf > .jstree-children { + display: none; +} +.jstree-anchor > .jstree-themeicon { + margin-right: 2px; +} +.jstree-no-icons .jstree-themeicon, +.jstree-anchor > .jstree-themeicon-hidden { + display: none; +} +.jstree-hidden, +.jstree-node.jstree-hidden { + display: none; +} +.jstree-rtl .jstree-anchor { + padding: 0 1px 0 4px; +} +.jstree-rtl .jstree-anchor > .jstree-themeicon { + margin-left: 2px; + margin-right: 0; +} +.jstree-rtl .jstree-node { + margin-left: 0; +} +.jstree-rtl .jstree-container-ul > .jstree-node { + margin-right: 0; +} +.jstree-wholerow-ul { + position: relative; + display: inline-block; + min-width: 100%; +} +.jstree-wholerow-ul .jstree-leaf > .jstree-ocl { + cursor: pointer; +} +.jstree-wholerow-ul .jstree-anchor, +.jstree-wholerow-ul .jstree-icon { + position: relative; +} +.jstree-wholerow-ul .jstree-wholerow { + width: 100%; + cursor: pointer; + position: absolute; + left: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.vakata-context { + display: none; +} +.vakata-context, +.vakata-context ul { + margin: 0; + padding: 2px; + position: absolute; + background: #f5f5f5; + border: 1px solid #979797; + box-shadow: 2px 2px 2px #999999; +} +.vakata-context ul { + list-style: none; + left: 100%; + margin-top: -2.7em; + margin-left: -4px; +} +.vakata-context .vakata-context-right ul { + left: auto; + right: 100%; + margin-left: auto; + margin-right: -4px; +} +.vakata-context li { + list-style: none; +} +.vakata-context li > a { + display: block; + padding: 0 2em 0 2em; + text-decoration: none; + width: auto; + color: black; + white-space: nowrap; + line-height: 2.4em; + text-shadow: 1px 1px 0 white; + border-radius: 1px; +} +.vakata-context li > a:hover { + position: relative; + background-color: #e8eff7; + box-shadow: 0 0 2px #0a6aa1; +} +.vakata-context li > a.vakata-context-parent { + background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw=="); + background-position: right center; + background-repeat: no-repeat; +} +.vakata-context li > a:focus { + outline: 0; +} +.vakata-context .vakata-context-hover > a { + position: relative; + background-color: #e8eff7; + box-shadow: 0 0 2px #0a6aa1; +} +.vakata-context .vakata-context-separator > a, +.vakata-context .vakata-context-separator > a:hover { + background: white; + border: 0; + border-top: 1px solid #e2e3e3; + height: 1px; + min-height: 1px; + max-height: 1px; + padding: 0; + margin: 0 0 0 2.4em; + border-left: 1px solid #e0e0e0; + text-shadow: 0 0 0 transparent; + box-shadow: 0 0 0 transparent; + border-radius: 0; +} +.vakata-context .vakata-contextmenu-disabled a, +.vakata-context .vakata-contextmenu-disabled a:hover { + color: silver; + background-color: transparent; + border: 0; + box-shadow: 0 0 0; +} +.vakata-context li > a > i { + text-decoration: none; + display: inline-block; + width: 2.4em; + height: 2.4em; + background: transparent; + margin: 0 0 0 -2em; + vertical-align: top; + text-align: center; + line-height: 2.4em; +} +.vakata-context li > a > i:empty { + width: 2.4em; + line-height: 2.4em; +} +.vakata-context li > a .vakata-contextmenu-sep { + display: inline-block; + width: 1px; + height: 2.4em; + background: white; + margin: 0 0.5em 0 0; + border-left: 1px solid #e2e3e3; +} +.vakata-context .vakata-contextmenu-shortcut { + font-size: 0.8em; + color: silver; + opacity: 0.5; + display: none; +} +.vakata-context-rtl ul { + left: auto; + right: 100%; + margin-left: auto; + margin-right: -4px; +} +.vakata-context-rtl li > a.vakata-context-parent { + background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7"); + background-position: left center; + background-repeat: no-repeat; +} +.vakata-context-rtl .vakata-context-separator > a { + margin: 0 2.4em 0 0; + border-left: 0; + border-right: 1px solid #e2e3e3; +} +.vakata-context-rtl .vakata-context-left ul { + right: auto; + left: 100%; + margin-left: -4px; + margin-right: auto; +} +.vakata-context-rtl li > a > i { + margin: 0 -2em 0 0; +} +.vakata-context-rtl li > a .vakata-contextmenu-sep { + margin: 0 0 0 0.5em; + border-left-color: white; + background: #e2e3e3; +} +#jstree-marker { + position: absolute; + top: 0; + left: 0; + margin: -5px 0 0 0; + padding: 0; + border-right: 0; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid; + width: 0; + height: 0; + font-size: 0; + line-height: 0; +} +#jstree-dnd { + line-height: 16px; + margin: 0; + padding: 4px; +} +#jstree-dnd .jstree-icon, +#jstree-dnd .jstree-copy { + display: inline-block; + text-decoration: none; + margin: 0 2px 0 0; + padding: 0; + width: 16px; + height: 16px; +} +#jstree-dnd .jstree-ok { + background: green; +} +#jstree-dnd .jstree-er { + background: red; +} +#jstree-dnd .jstree-copy { + margin: 0 2px 0 2px; +} +.jstree-default .jstree-node, +.jstree-default .jstree-icon { + background-repeat: no-repeat; + background-color: transparent; +} +.jstree-default .jstree-anchor, +.jstree-default .jstree-animated, +.jstree-default .jstree-wholerow { + transition: background-color 0.15s, box-shadow 0.15s; +} +.jstree-default .jstree-hovered { + background: #e7f4f9; + border-radius: 2px; + box-shadow: inset 0 0 1px #cccccc; +} +.jstree-default .jstree-context { + background: #e7f4f9; + border-radius: 2px; + box-shadow: inset 0 0 1px #cccccc; +} +.jstree-default .jstree-clicked { + background: #beebff; + border-radius: 2px; + box-shadow: inset 0 0 1px #999999; +} +.jstree-default .jstree-no-icons .jstree-anchor > .jstree-themeicon { + display: none; +} +.jstree-default .jstree-disabled { + background: transparent; + color: #666666; +} +.jstree-default .jstree-disabled.jstree-hovered { + background: transparent; + box-shadow: none; +} +.jstree-default .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default .jstree-disabled > .jstree-icon { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default .jstree-search { + font-style: italic; + color: #8b0000; + font-weight: bold; +} +.jstree-default .jstree-no-checkboxes .jstree-checkbox { + display: none !important; +} +.jstree-default.jstree-checkbox-no-clicked .jstree-clicked { + background: transparent; + box-shadow: none; +} +.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered { + background: #e7f4f9; +} +.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked { + background: transparent; +} +.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered { + background: #e7f4f9; +} +.jstree-default > .jstree-striped { + min-width: 100%; + display: inline-block; + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat; +} +.jstree-default > .jstree-wholerow-ul .jstree-hovered, +.jstree-default > .jstree-wholerow-ul .jstree-clicked { + background: transparent; + box-shadow: none; + border-radius: 0; +} +.jstree-default .jstree-wholerow { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.jstree-default .jstree-wholerow-hovered { + background: #e7f4f9; +} +.jstree-default .jstree-wholerow-clicked { + background: #beebff; + background: -webkit-linear-gradient(top, #beebff 0%, #a8e4ff 100%); + background: linear-gradient(to bottom, #beebff 0%, #a8e4ff 100%); +} +.jstree-default .jstree-node { + min-height: 24px; + line-height: 24px; + margin-left: 24px; + min-width: 24px; +} +.jstree-default .jstree-anchor { + line-height: 24px; + height: 24px; +} +.jstree-default .jstree-icon { + width: 24px; + height: 24px; + line-height: 24px; +} +.jstree-default .jstree-icon:empty { + width: 24px; + height: 24px; + line-height: 24px; +} +.jstree-default.jstree-rtl .jstree-node { + margin-right: 24px; +} +.jstree-default .jstree-wholerow { + height: 24px; +} +.jstree-default .jstree-node, +.jstree-default .jstree-icon { + background-image: url("32px.png"); +} +.jstree-default .jstree-node { + background-position: -292px -4px; + background-repeat: repeat-y; +} +.jstree-default .jstree-last { + background: transparent; +} +.jstree-default .jstree-open > .jstree-ocl { + background-position: -132px -4px; +} +.jstree-default .jstree-closed > .jstree-ocl { + background-position: -100px -4px; +} +.jstree-default .jstree-leaf > .jstree-ocl { + background-position: -68px -4px; +} +.jstree-default .jstree-themeicon { + background-position: -260px -4px; +} +.jstree-default > .jstree-no-dots .jstree-node, +.jstree-default > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -36px -4px; +} +.jstree-default > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -4px -4px; +} +.jstree-default .jstree-disabled { + background: transparent; +} +.jstree-default .jstree-disabled.jstree-hovered { + background: transparent; +} +.jstree-default .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default .jstree-checkbox { + background-position: -164px -4px; +} +.jstree-default .jstree-checkbox:hover { + background-position: -164px -36px; +} +.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, +.jstree-default .jstree-checked > .jstree-checkbox { + background-position: -228px -4px; +} +.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, +.jstree-default .jstree-checked > .jstree-checkbox:hover { + background-position: -228px -36px; +} +.jstree-default .jstree-anchor > .jstree-undetermined { + background-position: -196px -4px; +} +.jstree-default .jstree-anchor > .jstree-undetermined:hover { + background-position: -196px -36px; +} +.jstree-default .jstree-checkbox-disabled { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default > .jstree-striped { + background-size: auto 48px; +} +.jstree-default.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); + background-position: 100% 1px; + background-repeat: repeat-y; +} +.jstree-default.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default.jstree-rtl .jstree-open > .jstree-ocl { + background-position: -132px -36px; +} +.jstree-default.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -100px -36px; +} +.jstree-default.jstree-rtl .jstree-leaf > .jstree-ocl { + background-position: -68px -36px; +} +.jstree-default.jstree-rtl > .jstree-no-dots .jstree-node, +.jstree-default.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -36px -36px; +} +.jstree-default.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -4px -36px; +} +.jstree-default .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; +} +.jstree-default > .jstree-container-ul .jstree-loading > .jstree-ocl { + background: url("throbber.gif") center center no-repeat; +} +.jstree-default .jstree-file { + background: url("32px.png") -100px -68px no-repeat; +} +.jstree-default .jstree-folder { + background: url("32px.png") -260px -4px no-repeat; +} +.jstree-default > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; +} +#jstree-dnd.jstree-default { + line-height: 24px; + padding: 0 4px; +} +#jstree-dnd.jstree-default .jstree-ok, +#jstree-dnd.jstree-default .jstree-er { + background-image: url("32px.png"); + background-repeat: no-repeat; + background-color: transparent; +} +#jstree-dnd.jstree-default i { + background: transparent; + width: 24px; + height: 24px; + line-height: 24px; +} +#jstree-dnd.jstree-default .jstree-ok { + background-position: -4px -68px; +} +#jstree-dnd.jstree-default .jstree-er { + background-position: -36px -68px; +} +.jstree-default .jstree-ellipsis { + overflow: hidden; +} +.jstree-default .jstree-ellipsis .jstree-anchor { + width: calc(100% - 29px); + text-overflow: ellipsis; + overflow: hidden; +} +.jstree-default .jstree-ellipsis.jstree-no-icons .jstree-anchor { + width: calc(100% - 5px); +} +.jstree-default.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); +} +.jstree-default.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-small .jstree-node { + min-height: 18px; + line-height: 18px; + margin-left: 18px; + min-width: 18px; +} +.jstree-default-small .jstree-anchor { + line-height: 18px; + height: 18px; +} +.jstree-default-small .jstree-icon { + width: 18px; + height: 18px; + line-height: 18px; +} +.jstree-default-small .jstree-icon:empty { + width: 18px; + height: 18px; + line-height: 18px; +} +.jstree-default-small.jstree-rtl .jstree-node { + margin-right: 18px; +} +.jstree-default-small .jstree-wholerow { + height: 18px; +} +.jstree-default-small .jstree-node, +.jstree-default-small .jstree-icon { + background-image: url("32px.png"); +} +.jstree-default-small .jstree-node { + background-position: -295px -7px; + background-repeat: repeat-y; +} +.jstree-default-small .jstree-last { + background: transparent; +} +.jstree-default-small .jstree-open > .jstree-ocl { + background-position: -135px -7px; +} +.jstree-default-small .jstree-closed > .jstree-ocl { + background-position: -103px -7px; +} +.jstree-default-small .jstree-leaf > .jstree-ocl { + background-position: -71px -7px; +} +.jstree-default-small .jstree-themeicon { + background-position: -263px -7px; +} +.jstree-default-small > .jstree-no-dots .jstree-node, +.jstree-default-small > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-small > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -39px -7px; +} +.jstree-default-small > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -7px -7px; +} +.jstree-default-small .jstree-disabled { + background: transparent; +} +.jstree-default-small .jstree-disabled.jstree-hovered { + background: transparent; +} +.jstree-default-small .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default-small .jstree-checkbox { + background-position: -167px -7px; +} +.jstree-default-small .jstree-checkbox:hover { + background-position: -167px -39px; +} +.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, +.jstree-default-small .jstree-checked > .jstree-checkbox { + background-position: -231px -7px; +} +.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, +.jstree-default-small .jstree-checked > .jstree-checkbox:hover { + background-position: -231px -39px; +} +.jstree-default-small .jstree-anchor > .jstree-undetermined { + background-position: -199px -7px; +} +.jstree-default-small .jstree-anchor > .jstree-undetermined:hover { + background-position: -199px -39px; +} +.jstree-default-small .jstree-checkbox-disabled { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default-small > .jstree-striped { + background-size: auto 36px; +} +.jstree-default-small.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); + background-position: 100% 1px; + background-repeat: repeat-y; +} +.jstree-default-small.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-small.jstree-rtl .jstree-open > .jstree-ocl { + background-position: -135px -39px; +} +.jstree-default-small.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -103px -39px; +} +.jstree-default-small.jstree-rtl .jstree-leaf > .jstree-ocl { + background-position: -71px -39px; +} +.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-node, +.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -39px -39px; +} +.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -7px -39px; +} +.jstree-default-small .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; +} +.jstree-default-small > .jstree-container-ul .jstree-loading > .jstree-ocl { + background: url("throbber.gif") center center no-repeat; +} +.jstree-default-small .jstree-file { + background: url("32px.png") -103px -71px no-repeat; +} +.jstree-default-small .jstree-folder { + background: url("32px.png") -263px -7px no-repeat; +} +.jstree-default-small > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; +} +#jstree-dnd.jstree-default-small { + line-height: 18px; + padding: 0 4px; +} +#jstree-dnd.jstree-default-small .jstree-ok, +#jstree-dnd.jstree-default-small .jstree-er { + background-image: url("32px.png"); + background-repeat: no-repeat; + background-color: transparent; +} +#jstree-dnd.jstree-default-small i { + background: transparent; + width: 18px; + height: 18px; + line-height: 18px; +} +#jstree-dnd.jstree-default-small .jstree-ok { + background-position: -7px -71px; +} +#jstree-dnd.jstree-default-small .jstree-er { + background-position: -39px -71px; +} +.jstree-default-small .jstree-ellipsis { + overflow: hidden; +} +.jstree-default-small .jstree-ellipsis .jstree-anchor { + width: calc(100% - 23px); + text-overflow: ellipsis; + overflow: hidden; +} +.jstree-default-small .jstree-ellipsis.jstree-no-icons .jstree-anchor { + width: calc(100% - 5px); +} +.jstree-default-small.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); +} +.jstree-default-small.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-large .jstree-node { + min-height: 32px; + line-height: 32px; + margin-left: 32px; + min-width: 32px; +} +.jstree-default-large .jstree-anchor { + line-height: 32px; + height: 32px; +} +.jstree-default-large .jstree-icon { + width: 32px; + height: 32px; + line-height: 32px; +} +.jstree-default-large .jstree-icon:empty { + width: 32px; + height: 32px; + line-height: 32px; +} +.jstree-default-large.jstree-rtl .jstree-node { + margin-right: 32px; +} +.jstree-default-large .jstree-wholerow { + height: 32px; +} +.jstree-default-large .jstree-node, +.jstree-default-large .jstree-icon { + background-image: url("32px.png"); +} +.jstree-default-large .jstree-node { + background-position: -288px 0px; + background-repeat: repeat-y; +} +.jstree-default-large .jstree-last { + background: transparent; +} +.jstree-default-large .jstree-open > .jstree-ocl { + background-position: -128px 0px; +} +.jstree-default-large .jstree-closed > .jstree-ocl { + background-position: -96px 0px; +} +.jstree-default-large .jstree-leaf > .jstree-ocl { + background-position: -64px 0px; +} +.jstree-default-large .jstree-themeicon { + background-position: -256px 0px; +} +.jstree-default-large > .jstree-no-dots .jstree-node, +.jstree-default-large > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-large > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -32px 0px; +} +.jstree-default-large > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: 0px 0px; +} +.jstree-default-large .jstree-disabled { + background: transparent; +} +.jstree-default-large .jstree-disabled.jstree-hovered { + background: transparent; +} +.jstree-default-large .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default-large .jstree-checkbox { + background-position: -160px 0px; +} +.jstree-default-large .jstree-checkbox:hover { + background-position: -160px -32px; +} +.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, +.jstree-default-large .jstree-checked > .jstree-checkbox { + background-position: -224px 0px; +} +.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, +.jstree-default-large .jstree-checked > .jstree-checkbox:hover { + background-position: -224px -32px; +} +.jstree-default-large .jstree-anchor > .jstree-undetermined { + background-position: -192px 0px; +} +.jstree-default-large .jstree-anchor > .jstree-undetermined:hover { + background-position: -192px -32px; +} +.jstree-default-large .jstree-checkbox-disabled { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default-large > .jstree-striped { + background-size: auto 64px; +} +.jstree-default-large.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); + background-position: 100% 1px; + background-repeat: repeat-y; +} +.jstree-default-large.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-large.jstree-rtl .jstree-open > .jstree-ocl { + background-position: -128px -32px; +} +.jstree-default-large.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -96px -32px; +} +.jstree-default-large.jstree-rtl .jstree-leaf > .jstree-ocl { + background-position: -64px -32px; +} +.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-node, +.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -32px -32px; +} +.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: 0px -32px; +} +.jstree-default-large .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; +} +.jstree-default-large > .jstree-container-ul .jstree-loading > .jstree-ocl { + background: url("throbber.gif") center center no-repeat; +} +.jstree-default-large .jstree-file { + background: url("32px.png") -96px -64px no-repeat; +} +.jstree-default-large .jstree-folder { + background: url("32px.png") -256px 0px no-repeat; +} +.jstree-default-large > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; +} +#jstree-dnd.jstree-default-large { + line-height: 32px; + padding: 0 4px; +} +#jstree-dnd.jstree-default-large .jstree-ok, +#jstree-dnd.jstree-default-large .jstree-er { + background-image: url("32px.png"); + background-repeat: no-repeat; + background-color: transparent; +} +#jstree-dnd.jstree-default-large i { + background: transparent; + width: 32px; + height: 32px; + line-height: 32px; +} +#jstree-dnd.jstree-default-large .jstree-ok { + background-position: 0px -64px; +} +#jstree-dnd.jstree-default-large .jstree-er { + background-position: -32px -64px; +} +.jstree-default-large .jstree-ellipsis { + overflow: hidden; +} +.jstree-default-large .jstree-ellipsis .jstree-anchor { + width: calc(100% - 37px); + text-overflow: ellipsis; + overflow: hidden; +} +.jstree-default-large .jstree-ellipsis.jstree-no-icons .jstree-anchor { + width: calc(100% - 5px); +} +.jstree-default-large.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); +} +.jstree-default-large.jstree-rtl .jstree-last { + background: transparent; +} +@media (max-width: 768px) { + #jstree-dnd.jstree-dnd-responsive { + line-height: 40px; + font-weight: bold; + font-size: 1.1em; + text-shadow: 1px 1px white; + } + #jstree-dnd.jstree-dnd-responsive > i { + background: transparent; + width: 40px; + height: 40px; + } + #jstree-dnd.jstree-dnd-responsive > .jstree-ok { + background-image: url("40px.png"); + background-position: 0 -200px; + background-size: 120px 240px; + } + #jstree-dnd.jstree-dnd-responsive > .jstree-er { + background-image: url("40px.png"); + background-position: -40px -200px; + background-size: 120px 240px; + } + #jstree-marker.jstree-dnd-responsive { + border-left-width: 10px; + border-top-width: 10px; + border-bottom-width: 10px; + margin-top: -10px; + } +} +@media (max-width: 768px) { + .jstree-default-responsive { + /* + .jstree-open > .jstree-ocl, + .jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; } + */ + } + .jstree-default-responsive .jstree-icon { + background-image: url("40px.png"); + } + .jstree-default-responsive .jstree-node, + .jstree-default-responsive .jstree-leaf > .jstree-ocl { + background: transparent; + } + .jstree-default-responsive .jstree-node { + min-height: 40px; + line-height: 40px; + margin-left: 40px; + min-width: 40px; + white-space: nowrap; + } + .jstree-default-responsive .jstree-anchor { + line-height: 40px; + height: 40px; + } + .jstree-default-responsive .jstree-icon, + .jstree-default-responsive .jstree-icon:empty { + width: 40px; + height: 40px; + line-height: 40px; + } + .jstree-default-responsive > .jstree-container-ul > .jstree-node { + margin-left: 0; + } + .jstree-default-responsive.jstree-rtl .jstree-node { + margin-left: 0; + margin-right: 40px; + background: transparent; + } + .jstree-default-responsive.jstree-rtl .jstree-container-ul > .jstree-node { + margin-right: 0; + } + .jstree-default-responsive .jstree-ocl, + .jstree-default-responsive .jstree-themeicon, + .jstree-default-responsive .jstree-checkbox { + background-size: 120px 240px; + } + .jstree-default-responsive .jstree-leaf > .jstree-ocl, + .jstree-default-responsive.jstree-rtl .jstree-leaf > .jstree-ocl { + background: transparent; + } + .jstree-default-responsive .jstree-open > .jstree-ocl { + background-position: 0 0px !important; + } + .jstree-default-responsive .jstree-closed > .jstree-ocl { + background-position: 0 -40px !important; + } + .jstree-default-responsive.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -40px 0px !important; + } + .jstree-default-responsive .jstree-themeicon { + background-position: -40px -40px; + } + .jstree-default-responsive .jstree-checkbox, + .jstree-default-responsive .jstree-checkbox:hover { + background-position: -40px -80px; + } + .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, + .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, + .jstree-default-responsive .jstree-checked > .jstree-checkbox, + .jstree-default-responsive .jstree-checked > .jstree-checkbox:hover { + background-position: 0 -80px; + } + .jstree-default-responsive .jstree-anchor > .jstree-undetermined, + .jstree-default-responsive .jstree-anchor > .jstree-undetermined:hover { + background-position: 0 -120px; + } + .jstree-default-responsive .jstree-anchor { + font-weight: bold; + font-size: 1.1em; + text-shadow: 1px 1px white; + } + .jstree-default-responsive > .jstree-striped { + background: transparent; + } + .jstree-default-responsive .jstree-wholerow { + border-top: 1px solid rgba(255, 255, 255, 0.7); + border-bottom: 1px solid rgba(64, 64, 64, 0.2); + background: #ebebeb; + height: 40px; + } + .jstree-default-responsive .jstree-wholerow-hovered { + background: #e7f4f9; + } + .jstree-default-responsive .jstree-wholerow-clicked { + background: #beebff; + } + .jstree-default-responsive .jstree-children .jstree-last > .jstree-wholerow { + box-shadow: inset 0 -6px 3px -5px #666666; + } + .jstree-default-responsive .jstree-children .jstree-open > .jstree-wholerow { + box-shadow: inset 0 6px 3px -5px #666666; + border-top: 0; + } + .jstree-default-responsive .jstree-children .jstree-open + .jstree-open { + box-shadow: none; + } + .jstree-default-responsive .jstree-node, + .jstree-default-responsive .jstree-icon, + .jstree-default-responsive .jstree-node > .jstree-ocl, + .jstree-default-responsive .jstree-themeicon, + .jstree-default-responsive .jstree-checkbox { + background-image: url("40px.png"); + background-size: 120px 240px; + } + .jstree-default-responsive .jstree-node { + background-position: -80px 0; + background-repeat: repeat-y; + } + .jstree-default-responsive .jstree-last { + background: transparent; + } + .jstree-default-responsive .jstree-leaf > .jstree-ocl { + background-position: -40px -120px; + } + .jstree-default-responsive .jstree-last > .jstree-ocl { + background-position: -40px -160px; + } + .jstree-default-responsive .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; + } + .jstree-default-responsive .jstree-file { + background: url("40px.png") 0 -160px no-repeat; + background-size: 120px 240px; + } + .jstree-default-responsive .jstree-folder { + background: url("40px.png") -40px -40px no-repeat; + background-size: 120px 240px; + } + .jstree-default-responsive > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; + } +} diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/style.min.css b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/style.min.css new file mode 100644 index 0000000000..a76f15c094 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/style.min.css @@ -0,0 +1 @@ +.jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 #fff;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7);background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-icon,#jstree-dnd .jstree-copy{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-repeat:no-repeat;background-color:transparent}.jstree-default .jstree-anchor,.jstree-default .jstree-animated,.jstree-default .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default .jstree-hovered{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-context{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-clicked{background:#beebff;border-radius:2px;box-shadow:inset 0 0 1px #999}.jstree-default .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default .jstree-disabled{background:0 0;color:#666}.jstree-default .jstree-disabled.jstree-hovered{background:0 0;box-shadow:none}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default .jstree-search{font-style:italic;color:#8b0000;font-weight:700}.jstree-default .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked{background:0 0;box-shadow:none}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#e7f4f9}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:0 0}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#e7f4f9}.jstree-default>.jstree-striped{min-width:100%;display:inline-block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==) left top repeat}.jstree-default>.jstree-wholerow-ul .jstree-hovered,.jstree-default>.jstree-wholerow-ul .jstree-clicked{background:0 0;box-shadow:none;border-radius:0}.jstree-default .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default .jstree-wholerow-clicked{background:#beebff;background:-webkit-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:linear-gradient(to bottom,#beebff 0,#a8e4ff 100%)}.jstree-default .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default .jstree-anchor{line-height:24px;height:24px}.jstree-default .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default.jstree-rtl .jstree-node{margin-right:24px}.jstree-default .jstree-wholerow{height:24px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-image:url(32px.png)}.jstree-default .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default .jstree-last{background:0 0}.jstree-default .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default .jstree-themeicon{background-position:-260px -4px}.jstree-default>.jstree-no-dots .jstree-node,.jstree-default>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default .jstree-disabled{background:0 0}.jstree-default .jstree-disabled.jstree-hovered{background:0 0}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-checkbox{background-position:-164px -4px}.jstree-default .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default>.jstree-striped{background-size:auto 48px}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default .jstree-file{background:url(32px.png) -100px -68px no-repeat}.jstree-default .jstree-folder{background:url(32px.png) -260px -4px no-repeat}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default .jstree-ok,#jstree-dnd.jstree-default .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default i{background:0 0;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default .jstree-er{background-position:-36px -68px}.jstree-default .jstree-ellipsis{overflow:hidden}.jstree-default .jstree-ellipsis .jstree-anchor{width:calc(100% - 29px);text-overflow:ellipsis;overflow:hidden}.jstree-default .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-small .jstree-wholerow{height:18px}.jstree-default-small .jstree-node,.jstree-default-small .jstree-icon{background-image:url(32px.png)}.jstree-default-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-small .jstree-last{background:0 0}.jstree-default-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-small>.jstree-no-dots .jstree-node,.jstree-default-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-small .jstree-disabled{background:0 0}.jstree-default-small .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-small .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-small>.jstree-striped{background-size:auto 36px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-small .jstree-file{background:url(32px.png) -103px -71px no-repeat}.jstree-default-small .jstree-folder{background:url(32px.png) -263px -7px no-repeat}.jstree-default-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-small .jstree-ok,#jstree-dnd.jstree-default-small .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-small i{background:0 0;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-small .jstree-er{background-position:-39px -71px}.jstree-default-small .jstree-ellipsis{overflow:hidden}.jstree-default-small .jstree-ellipsis .jstree-anchor{width:calc(100% - 23px);text-overflow:ellipsis;overflow:hidden}.jstree-default-small .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-large .jstree-wholerow{height:32px}.jstree-default-large .jstree-node,.jstree-default-large .jstree-icon{background-image:url(32px.png)}.jstree-default-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-large .jstree-last{background:0 0}.jstree-default-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-large .jstree-themeicon{background-position:-256px 0}.jstree-default-large>.jstree-no-dots .jstree-node,.jstree-default-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-large .jstree-disabled{background:0 0}.jstree-default-large .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-large .jstree-checkbox{background-position:-160px 0}.jstree-default-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-large .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-large>.jstree-striped{background-size:auto 64px}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}.jstree-default-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-large .jstree-file{background:url(32px.png) -96px -64px no-repeat}.jstree-default-large .jstree-folder{background:url(32px.png) -256px 0 no-repeat}.jstree-default-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-large .jstree-ok,#jstree-dnd.jstree-default-large .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-large i{background:0 0;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-large .jstree-er{background-position:-32px -64px}.jstree-default-large .jstree-ellipsis{overflow:hidden}.jstree-default-large .jstree-ellipsis .jstree-anchor{width:calc(100% - 37px);text-overflow:ellipsis;overflow:hidden}.jstree-default-large .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:0 0;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(40px.png);background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url(40px.png);background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px;background:0 0}.jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-responsive .jstree-leaf>.jstree-ocl,.jstree-default-responsive.jstree-rtl .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-responsive>.jstree-striped{background:0 0}.jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,.7);border-bottom:1px solid rgba(64,64,64,.2);background:#ebebeb;height:40px}.jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default-responsive .jstree-wholerow-clicked{background:#beebff}.jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666}.jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0}.jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-responsive .jstree-last{background:0 0}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}} \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/throbber.gif b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/throbber.gif new file mode 100644 index 0000000000..1b5b2fde42 Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/dist/themes/default/throbber.gif differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/gruntfile.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/gruntfile.js new file mode 100644 index 0000000000..45a5f94e3c --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/gruntfile.js @@ -0,0 +1,241 @@ +/*global module:false, require:false, __dirname:false*/ + +module.exports = function(grunt) { + grunt.util.linefeed = "\n"; + + // Project configuration. + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + concat: { + options : { + separator : "\n" + }, + dist: { + src: ['src/<%= pkg.name %>.js', 'src/<%= pkg.name %>.*.js', 'src/vakata-jstree.js'], + dest: 'dist/<%= pkg.name %>.js' + } + }, + copy: { + libs : { + files : [ + { expand: true, cwd : 'libs/', src: ['*'], dest: 'dist/libs/' } + ] + }, + docs : { + files : [ + { expand: true, cwd : 'dist/', src: ['**/*'], dest: 'docs/assets/dist/' } + ] + } + }, + uglify: { + options: { + banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %> - (<%= _.pluck(pkg.licenses, "type").join(", ") %>) */\n', + preserveComments: false, + //sourceMap: "dist/jstree.min.map", + //sourceMappingURL: "jstree.min.map", + report: "min", + beautify: { + ascii_only: true + }, + compress: { + hoist_funs: false, + loops: false, + unused: false + } + }, + dist: { + src: ['<%= concat.dist.dest %>'], + dest: 'dist/<%= pkg.name %>.min.js' + } + }, + qunit: { + files: ['test/unit/**/*.html'] + }, + jshint: { + options: { + 'curly' : true, + 'eqeqeq' : true, + 'latedef' : true, + 'newcap' : true, + 'noarg' : true, + 'sub' : true, + 'undef' : true, + 'boss' : true, + 'eqnull' : true, + 'browser' : true, + 'trailing' : true, + 'globals' : { + 'console' : true, + 'jQuery' : true, + 'browser' : true, + 'XSLTProcessor' : true, + 'ActiveXObject' : true + } + }, + beforeconcat: ['src/<%= pkg.name %>.js', 'src/<%= pkg.name %>.*.js'], + afterconcat: ['dist/<%= pkg.name %>.js'] + }, + dox: { + files: { + src: ['src/*.js'], + dest: 'docs' + } + }, + amd : { + files: { + src: ['dist/jstree.js'], + dest: 'dist/jstree.js' + } + }, + less: { + production: { + options : { + cleancss : true, + compress : true + }, + files: { + "dist/themes/default/style.min.css" : "src/themes/default/style.less", + "dist/themes/default-dark/style.min.css" : "src/themes/default-dark/style.less" + } + }, + development: { + files: { + "src/themes/default/style.css" : "src/themes/default/style.less", + "dist/themes/default/style.css" : "src/themes/default/style.less", + "src/themes/default-dark/style.css" : "src/themes/default-dark/style.less", + "dist/themes/default-dark/style.css" : "src/themes/default-dark/style.less" + } + } + }, + watch: { + js : { + files: ['src/**/*.js'], + tasks: ['js'], + options : { + atBegin : true + } + }, + css : { + files: ['src/**/*.less','src/**/*.png','src/**/*.gif'], + tasks: ['css'], + options : { + atBegin : true + } + }, + }, + resemble: { + options: { + screenshotRoot: 'test/visual/screenshots/', + url: 'http://127.0.0.1/jstree/test/visual/', + gm: false + }, + desktop: { + options: { + width: 1280, + }, + src: ['desktop'], + dest: 'desktop', + }, + mobile: { + options: { + width: 360, + }, + src: ['mobile'], + dest: 'mobile' + } + }, + imagemin: { + dynamic: { + options: { // Target options + optimizationLevel: 7, + pngquant : true + }, + files: [{ + expand: true, // Enable dynamic expansion + cwd: 'src/themes/default/', // Src matches are relative to this path + src: ['**/*.{png,jpg,gif}'], // Actual patterns to match + dest: 'dist/themes/default/' // Destination path prefix + },{ + expand: true, // Enable dynamic expansion + cwd: 'src/themes/default-dark/', // Src matches are relative to this path + src: ['**/*.{png,jpg,gif}'], // Actual patterns to match + dest: 'dist/themes/default-dark/' // Destination path prefix + }] + } + }, + replace: { + files: { + src: ['dist/*.js', 'bower.json', 'component.json', 'jstree.jquery.json'], + overwrite: true, + replacements: [ + { + from: '{{VERSION}}', + to: "<%= pkg.version %>" + }, + { + from: /"version": "[^"]+"/g, + to: "\"version\": \"<%= pkg.version %>\"" + }, + ] + } + } + }); + + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-less'); + grunt.loadNpmTasks('grunt-contrib-qunit'); + grunt.loadNpmTasks('grunt-resemble-cli'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-imagemin'); + grunt.loadNpmTasks('grunt-text-replace'); + + grunt.registerMultiTask('amd', 'Clean up AMD', function () { + var s, d; + this.files.forEach(function (f) { + s = f.src; + d = f.dest; + }); + grunt.file.copy(s, d, { + process: function (contents) { + contents = contents.replace(/\s*if\(\$\.jstree\.plugins\.[a-z]+\)\s*\{\s*return;\s*\}/ig, ''); + contents = contents.replace(/\/\*globals[^\/]+\//ig, ''); + //contents = contents.replace(/\(function \(factory[\s\S]*?undefined/mig, '(function ($, undefined'); + //contents = contents.replace(/\}\)\);/g, '}(jQuery));'); + contents = contents.replace(/\(function \(factory[\s\S]*?undefined\s*\)[^\n]+/mig, ''); + contents = contents.replace(/\}\)\);/g, ''); + contents = contents.replace(/\s*("|')use strict("|');/g, ''); + contents = contents.replace(/\s*return \$\.fn\.jstree;/g, ''); + return grunt.file.read('src/intro.js') + contents + grunt.file.read('src/outro.js'); + } + }); + }); + + grunt.registerMultiTask('dox', 'Generate dox output ', function() { + var exec = require('child_process').exec, + path = require('path'), + done = this.async(), + doxPath = path.resolve(__dirname), + formatter = [doxPath, 'node_modules', '.bin', 'dox'].join(path.sep); + exec(formatter + ' < "dist/jstree.js" > "docs/jstree.json"', {maxBuffer: 5000*1024}, function(error, stout, sterr){ + if (error) { + grunt.log.error(formatter); + grunt.log.error("WARN: "+ error); + } + if (!error) { + grunt.log.writeln('dist/jstree.js doxxed.'); + done(); + } + }); + }); + + grunt.util.linefeed = "\n"; + + // Default task. + grunt.registerTask('default', ['jshint:beforeconcat','concat','amd','jshint:afterconcat','copy:libs','uglify','less','imagemin','replace','copy:docs','qunit','resemble','dox']); + grunt.registerTask('js', ['concat','amd','uglify']); + grunt.registerTask('css', ['copy','less']); + +}; diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/jstree.jquery.json b/mayan/apps/cabinets/static/cabinets/packages/jstree/jstree.jquery.json new file mode 100644 index 0000000000..c0e4945b59 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/jstree.jquery.json @@ -0,0 +1,28 @@ +{ + "name": "jstree", + "title": "jsTree", + "description": "Tree view for jQuery", + "version": "3.3.3", + "homepage": "http://jstree.com", + "keywords": [ + "ui", + "tree", + "jstree" + ], + "author": { + "name": "Ivan Bozhanov", + "email": "jstree@jstree.com", + "url": "http://vakata.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/vakata/jstree/blob/master/LICENSE-MIT" + } + ], + "bugs": "https://github.com/vakata/jstree/issues", + "demo": "http://jstree.com/demo", + "dependencies": { + "jquery": ">=1.9.1" + } +} \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/package.json b/mayan/apps/cabinets/static/cabinets/packages/jstree/package.json new file mode 100644 index 0000000000..709242cba6 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/package.json @@ -0,0 +1,58 @@ +{ + "name": "jstree", + "title": "jsTree", + "description": "jQuery tree plugin", + "version": "3.3.3", + "homepage": "http://jstree.com", + "main": "./dist/jstree.js", + "author": { + "name": "Ivan Bozhanov", + "email": "jstree@jstree.com", + "url": "http://vakata.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/vakata/jstree.git" + }, + "bugs": { + "url": "https://github.com/vakata/jstree/issues" + }, + "license": "MIT", + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/vakata/jstree/blob/master/LICENSE-MIT" + } + ], + "keywords": [], + "devDependencies": { + "dox": "~0.4.4", + "grunt": "~0.4.0", + "grunt-contrib-concat": "*", + "grunt-contrib-copy": "*", + "grunt-contrib-imagemin": "~0.4.0", + "grunt-contrib-jshint": "*", + "grunt-contrib-less": "~0.8.2", + "grunt-contrib-qunit": "~v0.3.0", + "grunt-contrib-uglify": "*", + "grunt-contrib-watch": "~0.5.3", + "grunt-phantomcss-gitdiff": "0.0.7", + "grunt-resemble-cli": "0.0.8", + "grunt-text-replace": "~0.3.11" + }, + "dependencies": { + "jquery": ">=1.9.1" + }, + "npmName": "jstree", + "npmFileMap": [ + { + "basePath": "/dist/", + "files": [ + "jstree.min.js", + "themes/**/*.png", + "themes/**/*.gif", + "themes/**/*.min.css" + ] + } + ] +} diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/intro.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/intro.js new file mode 100644 index 0000000000..5c95a5cdfb --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/intro.js @@ -0,0 +1,14 @@ +/*globals jQuery, define, module, exports, require, window, document, postMessage */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } + else if(typeof module !== 'undefined' && module.exports) { + module.exports = factory(require('jquery')); + } + else { + factory(jQuery); + } +}(function ($, undefined) { + "use strict"; diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.changed.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.changed.js new file mode 100644 index 0000000000..be8cfd7d12 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.changed.js @@ -0,0 +1,69 @@ +/** + * ### Changed plugin + * + * This plugin adds more information to the `changed.jstree` event. The new data is contained in the `changed` event data property, and contains a lists of `selected` and `deselected` nodes. + */ +/*globals jQuery, define, exports, require, document */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.changed', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.changed) { return; } + + $.jstree.plugins.changed = function (options, parent) { + var last = []; + this.trigger = function (ev, data) { + var i, j; + if(!data) { + data = {}; + } + if(ev.replace('.jstree','') === 'changed') { + data.changed = { selected : [], deselected : [] }; + var tmp = {}; + for(i = 0, j = last.length; i < j; i++) { + tmp[last[i]] = 1; + } + for(i = 0, j = data.selected.length; i < j; i++) { + if(!tmp[data.selected[i]]) { + data.changed.selected.push(data.selected[i]); + } + else { + tmp[data.selected[i]] = 2; + } + } + for(i = 0, j = last.length; i < j; i++) { + if(tmp[last[i]] === 1) { + data.changed.deselected.push(last[i]); + } + } + last = data.selected.slice(); + } + /** + * triggered when selection changes (the "changed" plugin enhances the original event with more data) + * @event + * @name changed.jstree + * @param {Object} node + * @param {Object} action the action that caused the selection to change + * @param {Array} selected the current selection + * @param {Object} changed an object containing two properties `selected` and `deselected` - both arrays of node IDs, which were selected or deselected since the last changed event + * @param {Object} event the event (if any) that triggered this changed event + * @plugin changed + */ + parent.trigger.call(this, ev, data); + }; + this.refresh = function (skip_loading, forget_state) { + last = []; + return parent.refresh.apply(this, arguments); + }; + }; +})); \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.checkbox.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.checkbox.js new file mode 100644 index 0000000000..5dd9837d75 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.checkbox.js @@ -0,0 +1,871 @@ +/** + * ### Checkbox plugin + * + * This plugin renders checkbox icons in front of each node, making multiple selection much easier. + * It also supports tri-state behavior, meaning that if a node has a few of its children checked it will be rendered as undetermined, and state will be propagated up. + */ +/*globals jQuery, define, exports, require, document */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.checkbox', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.checkbox) { return; } + + var _i = document.createElement('I'); + _i.className = 'jstree-icon jstree-checkbox'; + _i.setAttribute('role', 'presentation'); + /** + * stores all defaults for the checkbox plugin + * @name $.jstree.defaults.checkbox + * @plugin checkbox + */ + $.jstree.defaults.checkbox = { + /** + * a boolean indicating if checkboxes should be visible (can be changed at a later time using `show_checkboxes()` and `hide_checkboxes`). Defaults to `true`. + * @name $.jstree.defaults.checkbox.visible + * @plugin checkbox + */ + visible : true, + /** + * a boolean indicating if checkboxes should cascade down and have an undetermined state. Defaults to `true`. + * @name $.jstree.defaults.checkbox.three_state + * @plugin checkbox + */ + three_state : true, + /** + * a boolean indicating if clicking anywhere on the node should act as clicking on the checkbox. Defaults to `true`. + * @name $.jstree.defaults.checkbox.whole_node + * @plugin checkbox + */ + whole_node : true, + /** + * a boolean indicating if the selected style of a node should be kept, or removed. Defaults to `true`. + * @name $.jstree.defaults.checkbox.keep_selected_style + * @plugin checkbox + */ + keep_selected_style : true, + /** + * This setting controls how cascading and undetermined nodes are applied. + * If 'up' is in the string - cascading up is enabled, if 'down' is in the string - cascading down is enabled, if 'undetermined' is in the string - undetermined nodes will be used. + * If `three_state` is set to `true` this setting is automatically set to 'up+down+undetermined'. Defaults to ''. + * @name $.jstree.defaults.checkbox.cascade + * @plugin checkbox + */ + cascade : '', + /** + * This setting controls if checkbox are bound to the general tree selection or to an internal array maintained by the checkbox plugin. Defaults to `true`, only set to `false` if you know exactly what you are doing. + * @name $.jstree.defaults.checkbox.tie_selection + * @plugin checkbox + */ + tie_selection : true + }; + $.jstree.plugins.checkbox = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + this._data.checkbox.uto = false; + this._data.checkbox.selected = []; + if(this.settings.checkbox.three_state) { + this.settings.checkbox.cascade = 'up+down+undetermined'; + } + this.element + .on("init.jstree", $.proxy(function () { + this._data.checkbox.visible = this.settings.checkbox.visible; + if(!this.settings.checkbox.keep_selected_style) { + this.element.addClass('jstree-checkbox-no-clicked'); + } + if(this.settings.checkbox.tie_selection) { + this.element.addClass('jstree-checkbox-selection'); + } + }, this)) + .on("loading.jstree", $.proxy(function () { + this[ this._data.checkbox.visible ? 'show_checkboxes' : 'hide_checkboxes' ](); + }, this)); + if(this.settings.checkbox.cascade.indexOf('undetermined') !== -1) { + this.element + .on('changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree', $.proxy(function () { + // only if undetermined is in setting + if(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); } + this._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50); + }, this)); + } + if(!this.settings.checkbox.tie_selection) { + this.element + .on('model.jstree', $.proxy(function (e, data) { + var m = this._model.data, + p = m[data.parent], + dpc = data.nodes, + i, j; + for(i = 0, j = dpc.length; i < j; i++) { + m[dpc[i]].state.checked = m[dpc[i]].state.checked || (m[dpc[i]].original && m[dpc[i]].original.state && m[dpc[i]].original.state.checked); + if(m[dpc[i]].state.checked) { + this._data.checkbox.selected.push(dpc[i]); + } + } + }, this)); + } + if(this.settings.checkbox.cascade.indexOf('up') !== -1 || this.settings.checkbox.cascade.indexOf('down') !== -1) { + this.element + .on('model.jstree', $.proxy(function (e, data) { + var m = this._model.data, + p = m[data.parent], + dpc = data.nodes, + chd = [], + c, i, j, k, l, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection; + + if(s.indexOf('down') !== -1) { + // apply down + if(p.state[ t ? 'selected' : 'checked' ]) { + for(i = 0, j = dpc.length; i < j; i++) { + m[dpc[i]].state[ t ? 'selected' : 'checked' ] = true; + } + this._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(dpc); + } + else { + for(i = 0, j = dpc.length; i < j; i++) { + if(m[dpc[i]].state[ t ? 'selected' : 'checked' ]) { + for(k = 0, l = m[dpc[i]].children_d.length; k < l; k++) { + m[m[dpc[i]].children_d[k]].state[ t ? 'selected' : 'checked' ] = true; + } + this._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(m[dpc[i]].children_d); + } + } + } + } + + if(s.indexOf('up') !== -1) { + // apply up + for(i = 0, j = p.children_d.length; i < j; i++) { + if(!m[p.children_d[i]].children.length) { + chd.push(m[p.children_d[i]].parent); + } + } + chd = $.vakata.array_unique(chd); + for(k = 0, l = chd.length; k < l; k++) { + p = m[chd[k]]; + while(p && p.id !== $.jstree.root) { + c = 0; + for(i = 0, j = p.children.length; i < j; i++) { + c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; + } + if(c === j) { + p.state[ t ? 'selected' : 'checked' ] = true; + this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); + tmp = this.get_node(p, true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', true).children('.jstree-anchor').addClass( t ? 'jstree-clicked' : 'jstree-checked'); + } + } + else { + break; + } + p = this.get_node(p.parent); + } + } + } + + this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected); + }, this)) + .on(this.settings.checkbox.tie_selection ? 'select_node.jstree' : 'check_node.jstree', $.proxy(function (e, data) { + var obj = data.node, + m = this._model.data, + par = this.get_node(obj.parent), + dom = this.get_node(obj, true), + i, j, c, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection, + sel = {}, cur = this._data[ t ? 'core' : 'checkbox' ].selected; + + for (i = 0, j = cur.length; i < j; i++) { + sel[cur[i]] = true; + } + // apply down + if(s.indexOf('down') !== -1) { + //this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected.concat(obj.children_d)); + for(i = 0, j = obj.children_d.length; i < j; i++) { + sel[obj.children_d[i]] = true; + tmp = m[obj.children_d[i]]; + tmp.state[ t ? 'selected' : 'checked' ] = true; + if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { + tmp.original.state.undetermined = false; + } + } + } + + // apply up + if(s.indexOf('up') !== -1) { + while(par && par.id !== $.jstree.root) { + c = 0; + for(i = 0, j = par.children.length; i < j; i++) { + c += m[par.children[i]].state[ t ? 'selected' : 'checked' ]; + } + if(c === j) { + par.state[ t ? 'selected' : 'checked' ] = true; + sel[par.id] = true; + //this._data[ t ? 'core' : 'checkbox' ].selected.push(par.id); + tmp = this.get_node(par, true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); + } + } + else { + break; + } + par = this.get_node(par.parent); + } + } + + cur = []; + for (i in sel) { + if (sel.hasOwnProperty(i)) { + cur.push(i); + } + } + this._data[ t ? 'core' : 'checkbox' ].selected = cur; + + // apply down (process .children separately?) + if(s.indexOf('down') !== -1 && dom.length) { + dom.find('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked').parent().attr('aria-selected', true); + } + }, this)) + .on(this.settings.checkbox.tie_selection ? 'deselect_all.jstree' : 'uncheck_all.jstree', $.proxy(function (e, data) { + var obj = this.get_node($.jstree.root), + m = this._model.data, + i, j, tmp; + for(i = 0, j = obj.children_d.length; i < j; i++) { + tmp = m[obj.children_d[i]]; + if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { + tmp.original.state.undetermined = false; + } + } + }, this)) + .on(this.settings.checkbox.tie_selection ? 'deselect_node.jstree' : 'uncheck_node.jstree', $.proxy(function (e, data) { + var obj = data.node, + dom = this.get_node(obj, true), + i, j, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection, + cur = this._data[ t ? 'core' : 'checkbox' ].selected, sel = {}; + if(obj && obj.original && obj.original.state && obj.original.state.undetermined) { + obj.original.state.undetermined = false; + } + + // apply down + if(s.indexOf('down') !== -1) { + for(i = 0, j = obj.children_d.length; i < j; i++) { + tmp = this._model.data[obj.children_d[i]]; + tmp.state[ t ? 'selected' : 'checked' ] = false; + if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { + tmp.original.state.undetermined = false; + } + } + } + + // apply up + if(s.indexOf('up') !== -1) { + for(i = 0, j = obj.parents.length; i < j; i++) { + tmp = this._model.data[obj.parents[i]]; + tmp.state[ t ? 'selected' : 'checked' ] = false; + if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { + tmp.original.state.undetermined = false; + } + tmp = this.get_node(obj.parents[i], true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); + } + } + } + sel = {}; + for(i = 0, j = cur.length; i < j; i++) { + // apply down + apply up + if( + (s.indexOf('down') === -1 || $.inArray(cur[i], obj.children_d) === -1) && + (s.indexOf('up') === -1 || $.inArray(cur[i], obj.parents) === -1) + ) { + sel[cur[i]] = true; + } + } + cur = []; + for (i in sel) { + if (sel.hasOwnProperty(i)) { + cur.push(i); + } + } + this._data[ t ? 'core' : 'checkbox' ].selected = cur; + + // apply down (process .children separately?) + if(s.indexOf('down') !== -1 && dom.length) { + dom.find('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked').parent().attr('aria-selected', false); + } + }, this)); + } + if(this.settings.checkbox.cascade.indexOf('up') !== -1) { + this.element + .on('delete_node.jstree', $.proxy(function (e, data) { + // apply up (whole handler) + var p = this.get_node(data.parent), + m = this._model.data, + i, j, c, tmp, t = this.settings.checkbox.tie_selection; + while(p && p.id !== $.jstree.root && !p.state[ t ? 'selected' : 'checked' ]) { + c = 0; + for(i = 0, j = p.children.length; i < j; i++) { + c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; + } + if(j > 0 && c === j) { + p.state[ t ? 'selected' : 'checked' ] = true; + this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); + tmp = this.get_node(p, true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); + } + } + else { + break; + } + p = this.get_node(p.parent); + } + }, this)) + .on('move_node.jstree', $.proxy(function (e, data) { + // apply up (whole handler) + var is_multi = data.is_multi, + old_par = data.old_parent, + new_par = this.get_node(data.parent), + m = this._model.data, + p, c, i, j, tmp, t = this.settings.checkbox.tie_selection; + if(!is_multi) { + p = this.get_node(old_par); + while(p && p.id !== $.jstree.root && !p.state[ t ? 'selected' : 'checked' ]) { + c = 0; + for(i = 0, j = p.children.length; i < j; i++) { + c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; + } + if(j > 0 && c === j) { + p.state[ t ? 'selected' : 'checked' ] = true; + this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); + tmp = this.get_node(p, true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); + } + } + else { + break; + } + p = this.get_node(p.parent); + } + } + p = new_par; + while(p && p.id !== $.jstree.root) { + c = 0; + for(i = 0, j = p.children.length; i < j; i++) { + c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; + } + if(c === j) { + if(!p.state[ t ? 'selected' : 'checked' ]) { + p.state[ t ? 'selected' : 'checked' ] = true; + this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); + tmp = this.get_node(p, true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); + } + } + } + else { + if(p.state[ t ? 'selected' : 'checked' ]) { + p.state[ t ? 'selected' : 'checked' ] = false; + this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_remove_item(this._data[ t ? 'core' : 'checkbox' ].selected, p.id); + tmp = this.get_node(p, true); + if(tmp && tmp.length) { + tmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); + } + } + else { + break; + } + } + p = this.get_node(p.parent); + } + }, this)); + } + }; + /** + * set the undetermined state where and if necessary. Used internally. + * @private + * @name _undetermined() + * @plugin checkbox + */ + this._undetermined = function () { + if(this.element === null) { return; } + var i, j, k, l, o = {}, m = this._model.data, t = this.settings.checkbox.tie_selection, s = this._data[ t ? 'core' : 'checkbox' ].selected, p = [], tt = this; + for(i = 0, j = s.length; i < j; i++) { + if(m[s[i]] && m[s[i]].parents) { + for(k = 0, l = m[s[i]].parents.length; k < l; k++) { + if(o[m[s[i]].parents[k]] !== undefined) { + break; + } + if(m[s[i]].parents[k] !== $.jstree.root) { + o[m[s[i]].parents[k]] = true; + p.push(m[s[i]].parents[k]); + } + } + } + } + // attempt for server side undetermined state + this.element.find('.jstree-closed').not(':has(.jstree-children)') + .each(function () { + var tmp = tt.get_node(this), tmp2; + if(!tmp.state.loaded) { + if(tmp.original && tmp.original.state && tmp.original.state.undetermined && tmp.original.state.undetermined === true) { + if(o[tmp.id] === undefined && tmp.id !== $.jstree.root) { + o[tmp.id] = true; + p.push(tmp.id); + } + for(k = 0, l = tmp.parents.length; k < l; k++) { + if(o[tmp.parents[k]] === undefined && tmp.parents[k] !== $.jstree.root) { + o[tmp.parents[k]] = true; + p.push(tmp.parents[k]); + } + } + } + } + else { + for(i = 0, j = tmp.children_d.length; i < j; i++) { + tmp2 = m[tmp.children_d[i]]; + if(!tmp2.state.loaded && tmp2.original && tmp2.original.state && tmp2.original.state.undetermined && tmp2.original.state.undetermined === true) { + if(o[tmp2.id] === undefined && tmp2.id !== $.jstree.root) { + o[tmp2.id] = true; + p.push(tmp2.id); + } + for(k = 0, l = tmp2.parents.length; k < l; k++) { + if(o[tmp2.parents[k]] === undefined && tmp2.parents[k] !== $.jstree.root) { + o[tmp2.parents[k]] = true; + p.push(tmp2.parents[k]); + } + } + } + } + } + }); + + this.element.find('.jstree-undetermined').removeClass('jstree-undetermined'); + for(i = 0, j = p.length; i < j; i++) { + if(!m[p[i]].state[ t ? 'selected' : 'checked' ]) { + s = this.get_node(p[i], true); + if(s && s.length) { + s.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-undetermined'); + } + } + } + }; + this.redraw_node = function(obj, deep, is_callback, force_render) { + obj = parent.redraw_node.apply(this, arguments); + if(obj) { + var i, j, tmp = null, icon = null; + for(i = 0, j = obj.childNodes.length; i < j; i++) { + if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { + tmp = obj.childNodes[i]; + break; + } + } + if(tmp) { + if(!this.settings.checkbox.tie_selection && this._model.data[obj.id].state.checked) { tmp.className += ' jstree-checked'; } + icon = _i.cloneNode(false); + if(this._model.data[obj.id].state.checkbox_disabled) { icon.className += ' jstree-checkbox-disabled'; } + tmp.insertBefore(icon, tmp.childNodes[0]); + } + } + if(!is_callback && this.settings.checkbox.cascade.indexOf('undetermined') !== -1) { + if(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); } + this._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50); + } + return obj; + }; + /** + * show the node checkbox icons + * @name show_checkboxes() + * @plugin checkbox + */ + this.show_checkboxes = function () { this._data.core.themes.checkboxes = true; this.get_container_ul().removeClass("jstree-no-checkboxes"); }; + /** + * hide the node checkbox icons + * @name hide_checkboxes() + * @plugin checkbox + */ + this.hide_checkboxes = function () { this._data.core.themes.checkboxes = false; this.get_container_ul().addClass("jstree-no-checkboxes"); }; + /** + * toggle the node icons + * @name toggle_checkboxes() + * @plugin checkbox + */ + this.toggle_checkboxes = function () { if(this._data.core.themes.checkboxes) { this.hide_checkboxes(); } else { this.show_checkboxes(); } }; + /** + * checks if a node is in an undetermined state + * @name is_undetermined(obj) + * @param {mixed} obj + * @return {Boolean} + */ + this.is_undetermined = function (obj) { + obj = this.get_node(obj); + var s = this.settings.checkbox.cascade, i, j, t = this.settings.checkbox.tie_selection, d = this._data[ t ? 'core' : 'checkbox' ].selected, m = this._model.data; + if(!obj || obj.state[ t ? 'selected' : 'checked' ] === true || s.indexOf('undetermined') === -1 || (s.indexOf('down') === -1 && s.indexOf('up') === -1)) { + return false; + } + if(!obj.state.loaded && obj.original.state.undetermined === true) { + return true; + } + for(i = 0, j = obj.children_d.length; i < j; i++) { + if($.inArray(obj.children_d[i], d) !== -1 || (!m[obj.children_d[i]].state.loaded && m[obj.children_d[i]].original.state.undetermined)) { + return true; + } + } + return false; + }; + /** + * disable a node's checkbox + * @name disable_checkbox(obj) + * @param {mixed} obj an array can be used too + * @trigger disable_checkbox.jstree + * @plugin checkbox + */ + this.disable_checkbox = function (obj) { + var t1, t2, dom; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.disable_checkbox(obj[t1]); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + dom = this.get_node(obj, true); + if(!obj.state.checkbox_disabled) { + obj.state.checkbox_disabled = true; + if(dom && dom.length) { + dom.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-checkbox-disabled'); + } + /** + * triggered when an node's checkbox is disabled + * @event + * @name disable_checkbox.jstree + * @param {Object} node + * @plugin checkbox + */ + this.trigger('disable_checkbox', { 'node' : obj }); + } + }; + /** + * enable a node's checkbox + * @name disable_checkbox(obj) + * @param {mixed} obj an array can be used too + * @trigger enable_checkbox.jstree + * @plugin checkbox + */ + this.enable_checkbox = function (obj) { + var t1, t2, dom; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.enable_checkbox(obj[t1]); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + dom = this.get_node(obj, true); + if(obj.state.checkbox_disabled) { + obj.state.checkbox_disabled = false; + if(dom && dom.length) { + dom.children('.jstree-anchor').children('.jstree-checkbox').removeClass('jstree-checkbox-disabled'); + } + /** + * triggered when an node's checkbox is enabled + * @event + * @name enable_checkbox.jstree + * @param {Object} node + * @plugin checkbox + */ + this.trigger('enable_checkbox', { 'node' : obj }); + } + }; + + this.activate_node = function (obj, e) { + if($(e.target).hasClass('jstree-checkbox-disabled')) { + return false; + } + if(this.settings.checkbox.tie_selection && (this.settings.checkbox.whole_node || $(e.target).hasClass('jstree-checkbox'))) { + e.ctrlKey = true; + } + if(this.settings.checkbox.tie_selection || (!this.settings.checkbox.whole_node && !$(e.target).hasClass('jstree-checkbox'))) { + return parent.activate_node.call(this, obj, e); + } + if(this.is_disabled(obj)) { + return false; + } + if(this.is_checked(obj)) { + this.uncheck_node(obj, e); + } + else { + this.check_node(obj, e); + } + this.trigger('activate_node', { 'node' : this.get_node(obj) }); + }; + + /** + * check a node (only if tie_selection in checkbox settings is false, otherwise select_node will be called internally) + * @name check_node(obj) + * @param {mixed} obj an array can be used to check multiple nodes + * @trigger check_node.jstree + * @plugin checkbox + */ + this.check_node = function (obj, e) { + if(this.settings.checkbox.tie_selection) { return this.select_node(obj, false, true, e); } + var dom, t1, t2, th; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.check_node(obj[t1], e); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + dom = this.get_node(obj, true); + if(!obj.state.checked) { + obj.state.checked = true; + this._data.checkbox.selected.push(obj.id); + if(dom && dom.length) { + dom.children('.jstree-anchor').addClass('jstree-checked'); + } + /** + * triggered when an node is checked (only if tie_selection in checkbox settings is false) + * @event + * @name check_node.jstree + * @param {Object} node + * @param {Array} selected the current selection + * @param {Object} event the event (if any) that triggered this check_node + * @plugin checkbox + */ + this.trigger('check_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e }); + } + }; + /** + * uncheck a node (only if tie_selection in checkbox settings is false, otherwise deselect_node will be called internally) + * @name uncheck_node(obj) + * @param {mixed} obj an array can be used to uncheck multiple nodes + * @trigger uncheck_node.jstree + * @plugin checkbox + */ + this.uncheck_node = function (obj, e) { + if(this.settings.checkbox.tie_selection) { return this.deselect_node(obj, false, e); } + var t1, t2, dom; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.uncheck_node(obj[t1], e); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + dom = this.get_node(obj, true); + if(obj.state.checked) { + obj.state.checked = false; + this._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, obj.id); + if(dom.length) { + dom.children('.jstree-anchor').removeClass('jstree-checked'); + } + /** + * triggered when an node is unchecked (only if tie_selection in checkbox settings is false) + * @event + * @name uncheck_node.jstree + * @param {Object} node + * @param {Array} selected the current selection + * @param {Object} event the event (if any) that triggered this uncheck_node + * @plugin checkbox + */ + this.trigger('uncheck_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e }); + } + }; + /** + * checks all nodes in the tree (only if tie_selection in checkbox settings is false, otherwise select_all will be called internally) + * @name check_all() + * @trigger check_all.jstree, changed.jstree + * @plugin checkbox + */ + this.check_all = function () { + if(this.settings.checkbox.tie_selection) { return this.select_all(); } + var tmp = this._data.checkbox.selected.concat([]), i, j; + this._data.checkbox.selected = this._model.data[$.jstree.root].children_d.concat(); + for(i = 0, j = this._data.checkbox.selected.length; i < j; i++) { + if(this._model.data[this._data.checkbox.selected[i]]) { + this._model.data[this._data.checkbox.selected[i]].state.checked = true; + } + } + this.redraw(true); + /** + * triggered when all nodes are checked (only if tie_selection in checkbox settings is false) + * @event + * @name check_all.jstree + * @param {Array} selected the current selection + * @plugin checkbox + */ + this.trigger('check_all', { 'selected' : this._data.checkbox.selected }); + }; + /** + * uncheck all checked nodes (only if tie_selection in checkbox settings is false, otherwise deselect_all will be called internally) + * @name uncheck_all() + * @trigger uncheck_all.jstree + * @plugin checkbox + */ + this.uncheck_all = function () { + if(this.settings.checkbox.tie_selection) { return this.deselect_all(); } + var tmp = this._data.checkbox.selected.concat([]), i, j; + for(i = 0, j = this._data.checkbox.selected.length; i < j; i++) { + if(this._model.data[this._data.checkbox.selected[i]]) { + this._model.data[this._data.checkbox.selected[i]].state.checked = false; + } + } + this._data.checkbox.selected = []; + this.element.find('.jstree-checked').removeClass('jstree-checked'); + /** + * triggered when all nodes are unchecked (only if tie_selection in checkbox settings is false) + * @event + * @name uncheck_all.jstree + * @param {Object} node the previous selection + * @param {Array} selected the current selection + * @plugin checkbox + */ + this.trigger('uncheck_all', { 'selected' : this._data.checkbox.selected, 'node' : tmp }); + }; + /** + * checks if a node is checked (if tie_selection is on in the settings this function will return the same as is_selected) + * @name is_checked(obj) + * @param {mixed} obj + * @return {Boolean} + * @plugin checkbox + */ + this.is_checked = function (obj) { + if(this.settings.checkbox.tie_selection) { return this.is_selected(obj); } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + return obj.state.checked; + }; + /** + * get an array of all checked nodes (if tie_selection is on in the settings this function will return the same as get_selected) + * @name get_checked([full]) + * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned + * @return {Array} + * @plugin checkbox + */ + this.get_checked = function (full) { + if(this.settings.checkbox.tie_selection) { return this.get_selected(full); } + return full ? $.map(this._data.checkbox.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.checkbox.selected; + }; + /** + * get an array of all top level checked nodes (ignoring children of checked nodes) (if tie_selection is on in the settings this function will return the same as get_top_selected) + * @name get_top_checked([full]) + * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned + * @return {Array} + * @plugin checkbox + */ + this.get_top_checked = function (full) { + if(this.settings.checkbox.tie_selection) { return this.get_top_selected(full); } + var tmp = this.get_checked(true), + obj = {}, i, j, k, l; + for(i = 0, j = tmp.length; i < j; i++) { + obj[tmp[i].id] = tmp[i]; + } + for(i = 0, j = tmp.length; i < j; i++) { + for(k = 0, l = tmp[i].children_d.length; k < l; k++) { + if(obj[tmp[i].children_d[k]]) { + delete obj[tmp[i].children_d[k]]; + } + } + } + tmp = []; + for(i in obj) { + if(obj.hasOwnProperty(i)) { + tmp.push(i); + } + } + return full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp; + }; + /** + * get an array of all bottom level checked nodes (ignoring selected parents) (if tie_selection is on in the settings this function will return the same as get_bottom_selected) + * @name get_bottom_checked([full]) + * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned + * @return {Array} + * @plugin checkbox + */ + this.get_bottom_checked = function (full) { + if(this.settings.checkbox.tie_selection) { return this.get_bottom_selected(full); } + var tmp = this.get_checked(true), + obj = [], i, j; + for(i = 0, j = tmp.length; i < j; i++) { + if(!tmp[i].children.length) { + obj.push(tmp[i].id); + } + } + return full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj; + }; + this.load_node = function (obj, callback) { + var k, l, i, j, c, tmp; + if(!$.isArray(obj) && !this.settings.checkbox.tie_selection) { + tmp = this.get_node(obj); + if(tmp && tmp.state.loaded) { + for(k = 0, l = tmp.children_d.length; k < l; k++) { + if(this._model.data[tmp.children_d[k]].state.checked) { + c = true; + this._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, tmp.children_d[k]); + } + } + } + } + return parent.load_node.apply(this, arguments); + }; + this.get_state = function () { + var state = parent.get_state.apply(this, arguments); + if(this.settings.checkbox.tie_selection) { return state; } + state.checkbox = this._data.checkbox.selected.slice(); + return state; + }; + this.set_state = function (state, callback) { + var res = parent.set_state.apply(this, arguments); + if(res && state.checkbox) { + if(!this.settings.checkbox.tie_selection) { + this.uncheck_all(); + var _this = this; + $.each(state.checkbox, function (i, v) { + _this.check_node(v); + }); + } + delete state.checkbox; + this.set_state(state, callback); + return false; + } + return res; + }; + this.refresh = function (skip_loading, forget_state) { + if(!this.settings.checkbox.tie_selection) { + this._data.checkbox.selected = []; + } + return parent.refresh.apply(this, arguments); + }; + }; + + // include the checkbox plugin by default + // $.jstree.defaults.plugins.push("checkbox"); +})); \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.conditionalselect.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.conditionalselect.js new file mode 100644 index 0000000000..012562ec10 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.conditionalselect.js @@ -0,0 +1,38 @@ +/** + * ### Conditionalselect plugin + * + * This plugin allows defining a callback to allow or deny node selection by user input (activate node method). + */ +/*globals jQuery, define, exports, require, document */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.conditionalselect', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.conditionalselect) { return; } + + /** + * a callback (function) which is invoked in the instance's scope and receives two arguments - the node and the event that triggered the `activate_node` call. Returning false prevents working with the node, returning true allows invoking activate_node. Defaults to returning `true`. + * @name $.jstree.defaults.checkbox.visible + * @plugin checkbox + */ + $.jstree.defaults.conditionalselect = function () { return true; }; + $.jstree.plugins.conditionalselect = function (options, parent) { + // own function + this.activate_node = function (obj, e) { + if(this.settings.conditionalselect.call(this, this.get_node(obj), e)) { + parent.activate_node.call(this, obj, e); + } + }; + }; + +})); \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.contextmenu.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.contextmenu.js new file mode 100644 index 0000000000..00f4517510 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.contextmenu.js @@ -0,0 +1,653 @@ +/** + * ### Contextmenu plugin + * + * Shows a context menu when a node is right-clicked. + */ +/*globals jQuery, define, exports, require, document */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.contextmenu', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.contextmenu) { return; } + + /** + * stores all defaults for the contextmenu plugin + * @name $.jstree.defaults.contextmenu + * @plugin contextmenu + */ + $.jstree.defaults.contextmenu = { + /** + * a boolean indicating if the node should be selected when the context menu is invoked on it. Defaults to `true`. + * @name $.jstree.defaults.contextmenu.select_node + * @plugin contextmenu + */ + select_node : true, + /** + * a boolean indicating if the menu should be shown aligned with the node. Defaults to `true`, otherwise the mouse coordinates are used. + * @name $.jstree.defaults.contextmenu.show_at_node + * @plugin contextmenu + */ + show_at_node : true, + /** + * an object of actions, or a function that accepts a node and a callback function and calls the callback function with an object of actions available for that node (you can also return the items too). + * + * Each action consists of a key (a unique name) and a value which is an object with the following properties (only label and action are required). Once a menu item is activated the `action` function will be invoked with an object containing the following keys: item - the contextmenu item definition as seen below, reference - the DOM node that was used (the tree node), element - the contextmenu DOM element, position - an object with x/y properties indicating the position of the menu. + * + * * `separator_before` - a boolean indicating if there should be a separator before this item + * * `separator_after` - a boolean indicating if there should be a separator after this item + * * `_disabled` - a boolean indicating if this action should be disabled + * * `label` - a string - the name of the action (could be a function returning a string) + * * `title` - a string - an optional tooltip for the item + * * `action` - a function to be executed if this item is chosen, the function will receive + * * `icon` - a string, can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class + * * `shortcut` - keyCode which will trigger the action if the menu is open (for example `113` for rename, which equals F2) + * * `shortcut_label` - shortcut label (like for example `F2` for rename) + * * `submenu` - an object with the same structure as $.jstree.defaults.contextmenu.items which can be used to create a submenu - each key will be rendered as a separate option in a submenu that will appear once the current item is hovered + * + * @name $.jstree.defaults.contextmenu.items + * @plugin contextmenu + */ + items : function (o, cb) { // Could be an object directly + return { + "create" : { + "separator_before" : false, + "separator_after" : true, + "_disabled" : false, //(this.check("create_node", data.reference, {}, "last")), + "label" : "Create", + "action" : function (data) { + var inst = $.jstree.reference(data.reference), + obj = inst.get_node(data.reference); + inst.create_node(obj, {}, "last", function (new_node) { + setTimeout(function () { inst.edit(new_node); },0); + }); + } + }, + "rename" : { + "separator_before" : false, + "separator_after" : false, + "_disabled" : false, //(this.check("rename_node", data.reference, this.get_parent(data.reference), "")), + "label" : "Rename", + /*! + "shortcut" : 113, + "shortcut_label" : 'F2', + "icon" : "glyphicon glyphicon-leaf", + */ + "action" : function (data) { + var inst = $.jstree.reference(data.reference), + obj = inst.get_node(data.reference); + inst.edit(obj); + } + }, + "remove" : { + "separator_before" : false, + "icon" : false, + "separator_after" : false, + "_disabled" : false, //(this.check("delete_node", data.reference, this.get_parent(data.reference), "")), + "label" : "Delete", + "action" : function (data) { + var inst = $.jstree.reference(data.reference), + obj = inst.get_node(data.reference); + if(inst.is_selected(obj)) { + inst.delete_node(inst.get_selected()); + } + else { + inst.delete_node(obj); + } + } + }, + "ccp" : { + "separator_before" : true, + "icon" : false, + "separator_after" : false, + "label" : "Edit", + "action" : false, + "submenu" : { + "cut" : { + "separator_before" : false, + "separator_after" : false, + "label" : "Cut", + "action" : function (data) { + var inst = $.jstree.reference(data.reference), + obj = inst.get_node(data.reference); + if(inst.is_selected(obj)) { + inst.cut(inst.get_top_selected()); + } + else { + inst.cut(obj); + } + } + }, + "copy" : { + "separator_before" : false, + "icon" : false, + "separator_after" : false, + "label" : "Copy", + "action" : function (data) { + var inst = $.jstree.reference(data.reference), + obj = inst.get_node(data.reference); + if(inst.is_selected(obj)) { + inst.copy(inst.get_top_selected()); + } + else { + inst.copy(obj); + } + } + }, + "paste" : { + "separator_before" : false, + "icon" : false, + "_disabled" : function (data) { + return !$.jstree.reference(data.reference).can_paste(); + }, + "separator_after" : false, + "label" : "Paste", + "action" : function (data) { + var inst = $.jstree.reference(data.reference), + obj = inst.get_node(data.reference); + inst.paste(obj); + } + } + } + } + }; + } + }; + + $.jstree.plugins.contextmenu = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + + var last_ts = 0, cto = null, ex, ey; + this.element + .on("contextmenu.jstree", ".jstree-anchor", $.proxy(function (e, data) { + if (e.target.tagName.toLowerCase() === 'input') { + return; + } + e.preventDefault(); + last_ts = e.ctrlKey ? +new Date() : 0; + if(data || cto) { + last_ts = (+new Date()) + 10000; + } + if(cto) { + clearTimeout(cto); + } + if(!this.is_loading(e.currentTarget)) { + this.show_contextmenu(e.currentTarget, e.pageX, e.pageY, e); + } + }, this)) + .on("click.jstree", ".jstree-anchor", $.proxy(function (e) { + if(this._data.contextmenu.visible && (!last_ts || (+new Date()) - last_ts > 250)) { // work around safari & macOS ctrl+click + $.vakata.context.hide(); + } + last_ts = 0; + }, this)) + .on("touchstart.jstree", ".jstree-anchor", function (e) { + if(!e.originalEvent || !e.originalEvent.changedTouches || !e.originalEvent.changedTouches[0]) { + return; + } + ex = e.originalEvent.changedTouches[0].clientX; + ey = e.originalEvent.changedTouches[0].clientY; + cto = setTimeout(function () { + $(e.currentTarget).trigger('contextmenu', true); + }, 750); + }) + .on('touchmove.vakata.jstree', function (e) { + if(cto && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0] && (Math.abs(ex - e.originalEvent.changedTouches[0].clientX) > 50 || Math.abs(ey - e.originalEvent.changedTouches[0].clientY) > 50)) { + clearTimeout(cto); + } + }) + .on('touchend.vakata.jstree', function (e) { + if(cto) { + clearTimeout(cto); + } + }); + + /*! + if(!('oncontextmenu' in document.body) && ('ontouchstart' in document.body)) { + var el = null, tm = null; + this.element + .on("touchstart", ".jstree-anchor", function (e) { + el = e.currentTarget; + tm = +new Date(); + $(document).one("touchend", function (e) { + e.target = document.elementFromPoint(e.originalEvent.targetTouches[0].pageX - window.pageXOffset, e.originalEvent.targetTouches[0].pageY - window.pageYOffset); + e.currentTarget = e.target; + tm = ((+(new Date())) - tm); + if(e.target === el && tm > 600 && tm < 1000) { + e.preventDefault(); + $(el).trigger('contextmenu', e); + } + el = null; + tm = null; + }); + }); + } + */ + $(document).on("context_hide.vakata.jstree", $.proxy(function (e, data) { + this._data.contextmenu.visible = false; + $(data.reference).removeClass('jstree-context'); + }, this)); + }; + this.teardown = function () { + if(this._data.contextmenu.visible) { + $.vakata.context.hide(); + } + parent.teardown.call(this); + }; + + /** + * prepare and show the context menu for a node + * @name show_contextmenu(obj [, x, y]) + * @param {mixed} obj the node + * @param {Number} x the x-coordinate relative to the document to show the menu at + * @param {Number} y the y-coordinate relative to the document to show the menu at + * @param {Object} e the event if available that triggered the contextmenu + * @plugin contextmenu + * @trigger show_contextmenu.jstree + */ + this.show_contextmenu = function (obj, x, y, e) { + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + var s = this.settings.contextmenu, + d = this.get_node(obj, true), + a = d.children(".jstree-anchor"), + o = false, + i = false; + if(s.show_at_node || x === undefined || y === undefined) { + o = a.offset(); + x = o.left; + y = o.top + this._data.core.li_height; + } + if(this.settings.contextmenu.select_node && !this.is_selected(obj)) { + this.activate_node(obj, e); + } + + i = s.items; + if($.isFunction(i)) { + i = i.call(this, obj, $.proxy(function (i) { + this._show_contextmenu(obj, x, y, i); + }, this)); + } + if($.isPlainObject(i)) { + this._show_contextmenu(obj, x, y, i); + } + }; + /** + * show the prepared context menu for a node + * @name _show_contextmenu(obj, x, y, i) + * @param {mixed} obj the node + * @param {Number} x the x-coordinate relative to the document to show the menu at + * @param {Number} y the y-coordinate relative to the document to show the menu at + * @param {Number} i the object of items to show + * @plugin contextmenu + * @trigger show_contextmenu.jstree + * @private + */ + this._show_contextmenu = function (obj, x, y, i) { + var d = this.get_node(obj, true), + a = d.children(".jstree-anchor"); + $(document).one("context_show.vakata.jstree", $.proxy(function (e, data) { + var cls = 'jstree-contextmenu jstree-' + this.get_theme() + '-contextmenu'; + $(data.element).addClass(cls); + a.addClass('jstree-context'); + }, this)); + this._data.contextmenu.visible = true; + $.vakata.context.show(a, { 'x' : x, 'y' : y }, i); + /** + * triggered when the contextmenu is shown for a node + * @event + * @name show_contextmenu.jstree + * @param {Object} node the node + * @param {Number} x the x-coordinate of the menu relative to the document + * @param {Number} y the y-coordinate of the menu relative to the document + * @plugin contextmenu + */ + this.trigger('show_contextmenu', { "node" : obj, "x" : x, "y" : y }); + }; + }; + + // contextmenu helper + (function ($) { + var right_to_left = false, + vakata_context = { + element : false, + reference : false, + position_x : 0, + position_y : 0, + items : [], + html : "", + is_visible : false + }; + + $.vakata.context = { + settings : { + hide_onmouseleave : 0, + icons : true + }, + _trigger : function (event_name) { + $(document).triggerHandler("context_" + event_name + ".vakata", { + "reference" : vakata_context.reference, + "element" : vakata_context.element, + "position" : { + "x" : vakata_context.position_x, + "y" : vakata_context.position_y + } + }); + }, + _execute : function (i) { + i = vakata_context.items[i]; + return i && (!i._disabled || ($.isFunction(i._disabled) && !i._disabled({ "item" : i, "reference" : vakata_context.reference, "element" : vakata_context.element }))) && i.action ? i.action.call(null, { + "item" : i, + "reference" : vakata_context.reference, + "element" : vakata_context.element, + "position" : { + "x" : vakata_context.position_x, + "y" : vakata_context.position_y + } + }) : false; + }, + _parse : function (o, is_callback) { + if(!o) { return false; } + if(!is_callback) { + vakata_context.html = ""; + vakata_context.items = []; + } + var str = "", + sep = false, + tmp; + + if(is_callback) { str += "<"+"ul>"; } + $.each(o, function (i, val) { + if(!val) { return true; } + vakata_context.items.push(val); + if(!sep && val.separator_before) { + str += "<"+"li class='vakata-context-separator'><"+"a href='#' " + ($.vakata.context.settings.icons ? '' : 'style="margin-left:0px;"') + "> <"+"/a><"+"/li>"; + } + sep = false; + str += "<"+"li class='" + (val._class || "") + (val._disabled === true || ($.isFunction(val._disabled) && val._disabled({ "item" : val, "reference" : vakata_context.reference, "element" : vakata_context.element })) ? " vakata-contextmenu-disabled " : "") + "' "+(val.shortcut?" data-shortcut='"+val.shortcut+"' ":'')+">"; + str += "<"+"a href='#' rel='" + (vakata_context.items.length - 1) + "' " + (val.title ? "title='" + val.title + "'" : "") + ">"; + if($.vakata.context.settings.icons) { + str += "<"+"i "; + if(val.icon) { + if(val.icon.indexOf("/") !== -1 || val.icon.indexOf(".") !== -1) { str += " style='background:url(\"" + val.icon + "\") center center no-repeat' "; } + else { str += " class='" + val.icon + "' "; } + } + str += "><"+"/i><"+"span class='vakata-contextmenu-sep'> <"+"/span>"; + } + str += ($.isFunction(val.label) ? val.label({ "item" : i, "reference" : vakata_context.reference, "element" : vakata_context.element }) : val.label) + (val.shortcut?' '+ (val.shortcut_label || '') +'':'') + "<"+"/a>"; + if(val.submenu) { + tmp = $.vakata.context._parse(val.submenu, true); + if(tmp) { str += tmp; } + } + str += "<"+"/li>"; + if(val.separator_after) { + str += "<"+"li class='vakata-context-separator'><"+"a href='#' " + ($.vakata.context.settings.icons ? '' : 'style="margin-left:0px;"') + "> <"+"/a><"+"/li>"; + sep = true; + } + }); + str = str.replace(/
      • <\/li\>$/,""); + if(is_callback) { str += ""; } + /** + * triggered on the document when the contextmenu is parsed (HTML is built) + * @event + * @plugin contextmenu + * @name context_parse.vakata + * @param {jQuery} reference the element that was right clicked + * @param {jQuery} element the DOM element of the menu itself + * @param {Object} position the x & y coordinates of the menu + */ + if(!is_callback) { vakata_context.html = str; $.vakata.context._trigger("parse"); } + return str.length > 10 ? str : false; + }, + _show_submenu : function (o) { + o = $(o); + if(!o.length || !o.children("ul").length) { return; } + var e = o.children("ul"), + xl = o.offset().left, + x = xl + o.outerWidth(), + y = o.offset().top, + w = e.width(), + h = e.height(), + dw = $(window).width() + $(window).scrollLeft(), + dh = $(window).height() + $(window).scrollTop(); + // може да се спести е една проверка - дали няма някой от класовете вече нагоре + if(right_to_left) { + o[x - (w + 10 + o.outerWidth()) < 0 ? "addClass" : "removeClass"]("vakata-context-left"); + } + else { + o[x + w > dw && xl > dw - x ? "addClass" : "removeClass"]("vakata-context-right"); + } + if(y + h + 10 > dh) { + e.css("bottom","-1px"); + } + + //if does not fit - stick it to the side + if (o.hasClass('vakata-context-right')) { + if (xl < w) { + e.css("margin-right", xl - w); + } + } else { + if (dw - x < w) { + e.css("margin-left", dw - x - w); + } + } + + e.show(); + }, + show : function (reference, position, data) { + var o, e, x, y, w, h, dw, dh, cond = true; + if(vakata_context.element && vakata_context.element.length) { + vakata_context.element.width(''); + } + switch(cond) { + case (!position && !reference): + return false; + case (!!position && !!reference): + vakata_context.reference = reference; + vakata_context.position_x = position.x; + vakata_context.position_y = position.y; + break; + case (!position && !!reference): + vakata_context.reference = reference; + o = reference.offset(); + vakata_context.position_x = o.left + reference.outerHeight(); + vakata_context.position_y = o.top; + break; + case (!!position && !reference): + vakata_context.position_x = position.x; + vakata_context.position_y = position.y; + break; + } + if(!!reference && !data && $(reference).data('vakata_contextmenu')) { + data = $(reference).data('vakata_contextmenu'); + } + if($.vakata.context._parse(data)) { + vakata_context.element.html(vakata_context.html); + } + if(vakata_context.items.length) { + vakata_context.element.appendTo("body"); + e = vakata_context.element; + x = vakata_context.position_x; + y = vakata_context.position_y; + w = e.width(); + h = e.height(); + dw = $(window).width() + $(window).scrollLeft(); + dh = $(window).height() + $(window).scrollTop(); + if(right_to_left) { + x -= (e.outerWidth() - $(reference).outerWidth()); + if(x < $(window).scrollLeft() + 20) { + x = $(window).scrollLeft() + 20; + } + } + if(x + w + 20 > dw) { + x = dw - (w + 20); + } + if(y + h + 20 > dh) { + y = dh - (h + 20); + } + + vakata_context.element + .css({ "left" : x, "top" : y }) + .show() + .find('a').first().focus().parent().addClass("vakata-context-hover"); + vakata_context.is_visible = true; + /** + * triggered on the document when the contextmenu is shown + * @event + * @plugin contextmenu + * @name context_show.vakata + * @param {jQuery} reference the element that was right clicked + * @param {jQuery} element the DOM element of the menu itself + * @param {Object} position the x & y coordinates of the menu + */ + $.vakata.context._trigger("show"); + } + }, + hide : function () { + if(vakata_context.is_visible) { + vakata_context.element.hide().find("ul").hide().end().find(':focus').blur().end().detach(); + vakata_context.is_visible = false; + /** + * triggered on the document when the contextmenu is hidden + * @event + * @plugin contextmenu + * @name context_hide.vakata + * @param {jQuery} reference the element that was right clicked + * @param {jQuery} element the DOM element of the menu itself + * @param {Object} position the x & y coordinates of the menu + */ + $.vakata.context._trigger("hide"); + } + } + }; + $(function () { + right_to_left = $("body").css("direction") === "rtl"; + var to = false; + + vakata_context.element = $("
          "); + vakata_context.element + .on("mouseenter", "li", function (e) { + e.stopImmediatePropagation(); + + if($.contains(this, e.relatedTarget)) { + // премахнато заради delegate mouseleave по-долу + // $(this).find(".vakata-context-hover").removeClass("vakata-context-hover"); + return; + } + + if(to) { clearTimeout(to); } + vakata_context.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(); + + $(this) + .siblings().find("ul").hide().end().end() + .parentsUntil(".vakata-context", "li").addBack().addClass("vakata-context-hover"); + $.vakata.context._show_submenu(this); + }) + // тестово - дали не натоварва? + .on("mouseleave", "li", function (e) { + if($.contains(this, e.relatedTarget)) { return; } + $(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover"); + }) + .on("mouseleave", function (e) { + $(this).find(".vakata-context-hover").removeClass("vakata-context-hover"); + if($.vakata.context.settings.hide_onmouseleave) { + to = setTimeout( + (function (t) { + return function () { $.vakata.context.hide(); }; + }(this)), $.vakata.context.settings.hide_onmouseleave); + } + }) + .on("click", "a", function (e) { + e.preventDefault(); + //}) + //.on("mouseup", "a", function (e) { + if(!$(this).blur().parent().hasClass("vakata-context-disabled") && $.vakata.context._execute($(this).attr("rel")) !== false) { + $.vakata.context.hide(); + } + }) + .on('keydown', 'a', function (e) { + var o = null; + switch(e.which) { + case 13: + case 32: + e.type = "click"; + e.preventDefault(); + $(e.currentTarget).trigger(e); + break; + case 37: + if(vakata_context.is_visible) { + vakata_context.element.find(".vakata-context-hover").last().closest("li").first().find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children('a').focus(); + e.stopImmediatePropagation(); + e.preventDefault(); + } + break; + case 38: + if(vakata_context.is_visible) { + o = vakata_context.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(); + if(!o.length) { o = vakata_context.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last(); } + o.addClass("vakata-context-hover").children('a').focus(); + e.stopImmediatePropagation(); + e.preventDefault(); + } + break; + case 39: + if(vakata_context.is_visible) { + vakata_context.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children('a').focus(); + e.stopImmediatePropagation(); + e.preventDefault(); + } + break; + case 40: + if(vakata_context.is_visible) { + o = vakata_context.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(); + if(!o.length) { o = vakata_context.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first(); } + o.addClass("vakata-context-hover").children('a').focus(); + e.stopImmediatePropagation(); + e.preventDefault(); + } + break; + case 27: + $.vakata.context.hide(); + e.preventDefault(); + break; + default: + //console.log(e.which); + break; + } + }) + .on('keydown', function (e) { + e.preventDefault(); + var a = vakata_context.element.find('.vakata-contextmenu-shortcut-' + e.which).parent(); + if(a.parent().not('.vakata-context-disabled')) { + a.click(); + } + }); + + $(document) + .on("mousedown.vakata.jstree", function (e) { + if(vakata_context.is_visible && !$.contains(vakata_context.element[0], e.target)) { + $.vakata.context.hide(); + } + }) + .on("context_show.vakata.jstree", function (e, data) { + vakata_context.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"); + if(right_to_left) { + vakata_context.element.addClass("vakata-context-rtl").css("direction", "rtl"); + } + // also apply a RTL class? + vakata_context.element.find("ul").hide().end(); + }); + }); + }($)); + // $.jstree.defaults.plugins.push("contextmenu"); +})); diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.dnd.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.dnd.js new file mode 100644 index 0000000000..a8a4cec2ec --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.dnd.js @@ -0,0 +1,653 @@ +/** + * ### Drag'n'drop plugin + * + * Enables dragging and dropping of nodes in the tree, resulting in a move or copy operations. + */ +/*globals jQuery, define, exports, require, document */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.dnd', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.dnd) { return; } + + /** + * stores all defaults for the drag'n'drop plugin + * @name $.jstree.defaults.dnd + * @plugin dnd + */ + $.jstree.defaults.dnd = { + /** + * a boolean indicating if a copy should be possible while dragging (by pressint the meta key or Ctrl). Defaults to `true`. + * @name $.jstree.defaults.dnd.copy + * @plugin dnd + */ + copy : true, + /** + * a number indicating how long a node should remain hovered while dragging to be opened. Defaults to `500`. + * @name $.jstree.defaults.dnd.open_timeout + * @plugin dnd + */ + open_timeout : 500, + /** + * a function invoked each time a node is about to be dragged, invoked in the tree's scope and receives the nodes about to be dragged as an argument (array) and the event that started the drag - return `false` to prevent dragging + * @name $.jstree.defaults.dnd.is_draggable + * @plugin dnd + */ + is_draggable : true, + /** + * a boolean indicating if checks should constantly be made while the user is dragging the node (as opposed to checking only on drop), default is `true` + * @name $.jstree.defaults.dnd.check_while_dragging + * @plugin dnd + */ + check_while_dragging : true, + /** + * a boolean indicating if nodes from this tree should only be copied with dnd (as opposed to moved), default is `false` + * @name $.jstree.defaults.dnd.always_copy + * @plugin dnd + */ + always_copy : false, + /** + * when dropping a node "inside", this setting indicates the position the node should go to - it can be an integer or a string: "first" (same as 0) or "last", default is `0` + * @name $.jstree.defaults.dnd.inside_pos + * @plugin dnd + */ + inside_pos : 0, + /** + * when starting the drag on a node that is selected this setting controls if all selected nodes are dragged or only the single node, default is `true`, which means all selected nodes are dragged when the drag is started on a selected node + * @name $.jstree.defaults.dnd.drag_selection + * @plugin dnd + */ + drag_selection : true, + /** + * controls whether dnd works on touch devices. If left as boolean true dnd will work the same as in desktop browsers, which in some cases may impair scrolling. If set to boolean false dnd will not work on touch devices. There is a special third option - string "selected" which means only selected nodes can be dragged on touch devices. + * @name $.jstree.defaults.dnd.touch + * @plugin dnd + */ + touch : true, + /** + * controls whether items can be dropped anywhere on the node, not just on the anchor, by default only the node anchor is a valid drop target. Works best with the wholerow plugin. If enabled on mobile depending on the interface it might be hard for the user to cancel the drop, since the whole tree container will be a valid drop target. + * @name $.jstree.defaults.dnd.large_drop_target + * @plugin dnd + */ + large_drop_target : false, + /** + * controls whether a drag can be initiated from any part of the node and not just the text/icon part, works best with the wholerow plugin. Keep in mind it can cause problems with tree scrolling on mobile depending on the interface - in that case set the touch option to "selected". + * @name $.jstree.defaults.dnd.large_drag_target + * @plugin dnd + */ + large_drag_target : false, + /** + * controls whether use HTML5 dnd api instead of classical. That will allow better integration of dnd events with other HTML5 controls. + * @reference http://caniuse.com/#feat=dragndrop + * @name $.jstree.defaults.dnd.use_html5 + * @plugin dnd + */ + use_html5: false + }; + var drg, elm; + // TODO: now check works by checking for each node individually, how about max_children, unique, etc? + $.jstree.plugins.dnd = function (options, parent) { + this.init = function (el, options) { + parent.init.call(this, el, options); + this.settings.dnd.use_html5 = this.settings.dnd.use_html5 && ('draggable' in document.createElement('span')); + }; + this.bind = function () { + parent.bind.call(this); + + this.element + .on(this.settings.dnd.use_html5 ? 'dragstart.jstree' : 'mousedown.jstree touchstart.jstree', this.settings.dnd.large_drag_target ? '.jstree-node' : '.jstree-anchor', $.proxy(function (e) { + if(this.settings.dnd.large_drag_target && $(e.target).closest('.jstree-node')[0] !== e.currentTarget) { + return true; + } + if(e.type === "touchstart" && (!this.settings.dnd.touch || (this.settings.dnd.touch === 'selected' && !$(e.currentTarget).closest('.jstree-node').children('.jstree-anchor').hasClass('jstree-clicked')))) { + return true; + } + var obj = this.get_node(e.target), + mlt = this.is_selected(obj) && this.settings.dnd.drag_selection ? this.get_top_selected().length : 1, + txt = (mlt > 1 ? mlt + ' ' + this.get_string('nodes') : this.get_text(e.currentTarget)); + if(this.settings.core.force_text) { + txt = $.vakata.html.escape(txt); + } + if(obj && obj.id && obj.id !== $.jstree.root && (e.which === 1 || e.type === "touchstart" || e.type === "dragstart") && + (this.settings.dnd.is_draggable === true || ($.isFunction(this.settings.dnd.is_draggable) && this.settings.dnd.is_draggable.call(this, (mlt > 1 ? this.get_top_selected(true) : [obj]), e))) + ) { + drg = { 'jstree' : true, 'origin' : this, 'obj' : this.get_node(obj,true), 'nodes' : mlt > 1 ? this.get_top_selected() : [obj.id] }; + elm = e.currentTarget; + if (this.settings.dnd.use_html5) { + $.vakata.dnd._trigger('start', e, { 'helper': $(), 'element': elm, 'data': drg }); + } else { + this.element.trigger('mousedown.jstree'); + return $.vakata.dnd.start(e, drg, '
          ' + txt + '
          '); + } + } + }, this)); + if (this.settings.dnd.use_html5) { + this.element + .on('dragover.jstree', function (e) { + e.preventDefault(); + $.vakata.dnd._trigger('move', e, { 'helper': $(), 'element': elm, 'data': drg }); + return false; + }) + //.on('dragenter.jstree', this.settings.dnd.large_drop_target ? '.jstree-node' : '.jstree-anchor', $.proxy(function (e) { + // e.preventDefault(); + // $.vakata.dnd._trigger('move', e, { 'helper': $(), 'element': elm, 'data': drg }); + // return false; + // }, this)) + .on('drop.jstree', $.proxy(function (e) { + e.preventDefault(); + $.vakata.dnd._trigger('stop', e, { 'helper': $(), 'element': elm, 'data': drg }); + return false; + }, this)); + } + }; + this.redraw_node = function(obj, deep, callback, force_render) { + obj = parent.redraw_node.apply(this, arguments); + if (obj && this.settings.dnd.use_html5) { + if (this.settings.dnd.large_drag_target) { + obj.setAttribute('draggable', true); + } else { + var i, j, tmp = null; + for(i = 0, j = obj.childNodes.length; i < j; i++) { + if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { + tmp = obj.childNodes[i]; + break; + } + } + if(tmp) { + tmp.setAttribute('draggable', true); + } + } + } + return obj; + }; + }; + + $(function() { + // bind only once for all instances + var lastmv = false, + laster = false, + lastev = false, + opento = false, + marker = $('
           
          ').hide(); //.appendTo('body'); + + $(document) + .on('dnd_start.vakata.jstree', function (e, data) { + lastmv = false; + lastev = false; + if(!data || !data.data || !data.data.jstree) { return; } + marker.appendTo('body'); //.show(); + }) + .on('dnd_move.vakata.jstree', function (e, data) { + if(opento) { + if (!data.event || data.event.type !== 'dragover' || data.event.target !== lastev.target) { + clearTimeout(opento); + } + } + if(!data || !data.data || !data.data.jstree) { return; } + + // if we are hovering the marker image do nothing (can happen on "inside" drags) + if(data.event.target.id && data.event.target.id === 'jstree-marker') { + return; + } + lastev = data.event; + + var ins = $.jstree.reference(data.event.target), + ref = false, + off = false, + rel = false, + tmp, l, t, h, p, i, o, ok, t1, t2, op, ps, pr, ip, tm, is_copy, pn; + // if we are over an instance + if(ins && ins._data && ins._data.dnd) { + marker.attr('class', 'jstree-' + ins.get_theme() + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' )); + is_copy = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))); + data.helper + .children().attr('class', 'jstree-' + ins.get_theme() + ' jstree-' + ins.get_theme() + '-' + ins.get_theme_variant() + ' ' + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' )) + .find('.jstree-copy').first()[ is_copy ? 'show' : 'hide' ](); + + // if are hovering the container itself add a new root node + //console.log(data.event); + if( (data.event.target === ins.element[0] || data.event.target === ins.get_container_ul()[0]) && ins.get_container_ul().children().length === 0) { + ok = true; + for(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) { + ok = ok && ins.check( (data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey)) ) ? "copy_node" : "move_node"), (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), $.jstree.root, 'last', { 'dnd' : true, 'ref' : ins.get_node($.jstree.root), 'pos' : 'i', 'origin' : data.data.origin, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }); + if(!ok) { break; } + } + if(ok) { + lastmv = { 'ins' : ins, 'par' : $.jstree.root, 'pos' : 'last' }; + marker.hide(); + data.helper.find('.jstree-icon').first().removeClass('jstree-er').addClass('jstree-ok'); + if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { + data.event.originalEvent.dataTransfer.dropEffect = is_copy ? 'copy' : 'move'; + } + return; + } + } + else { + // if we are hovering a tree node + ref = ins.settings.dnd.large_drop_target ? $(data.event.target).closest('.jstree-node').children('.jstree-anchor') : $(data.event.target).closest('.jstree-anchor'); + if(ref && ref.length && ref.parent().is('.jstree-closed, .jstree-open, .jstree-leaf')) { + off = ref.offset(); + rel = (data.event.pageY !== undefined ? data.event.pageY : data.event.originalEvent.pageY) - off.top; + h = ref.outerHeight(); + if(rel < h / 3) { + o = ['b', 'i', 'a']; + } + else if(rel > h - h / 3) { + o = ['a', 'i', 'b']; + } + else { + o = rel > h / 2 ? ['i', 'a', 'b'] : ['i', 'b', 'a']; + } + $.each(o, function (j, v) { + switch(v) { + case 'b': + l = off.left - 6; + t = off.top; + p = ins.get_parent(ref); + i = ref.parent().index(); + break; + case 'i': + ip = ins.settings.dnd.inside_pos; + tm = ins.get_node(ref.parent()); + l = off.left - 2; + t = off.top + h / 2 + 1; + p = tm.id; + i = ip === 'first' ? 0 : (ip === 'last' ? tm.children.length : Math.min(ip, tm.children.length)); + break; + case 'a': + l = off.left - 6; + t = off.top + h; + p = ins.get_parent(ref); + i = ref.parent().index() + 1; + break; + } + ok = true; + for(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) { + op = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? "copy_node" : "move_node"; + ps = i; + if(op === "move_node" && v === 'a' && (data.data.origin && data.data.origin === ins) && p === ins.get_parent(data.data.nodes[t1])) { + pr = ins.get_node(p); + if(ps > $.inArray(data.data.nodes[t1], pr.children)) { + ps -= 1; + } + } + ok = ok && ( (ins && ins.settings && ins.settings.dnd && ins.settings.dnd.check_while_dragging === false) || ins.check(op, (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), p, ps, { 'dnd' : true, 'ref' : ins.get_node(ref.parent()), 'pos' : v, 'origin' : data.data.origin, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }) ); + if(!ok) { + if(ins && ins.last_error) { laster = ins.last_error(); } + break; + } + } + if(v === 'i' && ref.parent().is('.jstree-closed') && ins.settings.dnd.open_timeout) { + opento = setTimeout((function (x, z) { return function () { x.open_node(z); }; }(ins, ref)), ins.settings.dnd.open_timeout); + } + if(ok) { + pn = ins.get_node(p, true); + if (!pn.hasClass('.jstree-dnd-parent')) { + $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); + pn.addClass('jstree-dnd-parent'); + } + lastmv = { 'ins' : ins, 'par' : p, 'pos' : v === 'i' && ip === 'last' && i === 0 && !ins.is_loaded(tm) ? 'last' : i }; + marker.css({ 'left' : l + 'px', 'top' : t + 'px' }).show(); + data.helper.find('.jstree-icon').first().removeClass('jstree-er').addClass('jstree-ok'); + if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { + data.event.originalEvent.dataTransfer.dropEffect = is_copy ? 'copy' : 'move'; + } + laster = {}; + o = true; + return false; + } + }); + if(o === true) { return; } + } + } + } + $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); + lastmv = false; + data.helper.find('.jstree-icon').removeClass('jstree-ok').addClass('jstree-er'); + if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { + data.event.originalEvent.dataTransfer.dropEffect = 'none'; + } + marker.hide(); + }) + .on('dnd_scroll.vakata.jstree', function (e, data) { + if(!data || !data.data || !data.data.jstree) { return; } + marker.hide(); + lastmv = false; + lastev = false; + data.helper.find('.jstree-icon').first().removeClass('jstree-ok').addClass('jstree-er'); + }) + .on('dnd_stop.vakata.jstree', function (e, data) { + $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); + if(opento) { clearTimeout(opento); } + if(!data || !data.data || !data.data.jstree) { return; } + marker.hide().detach(); + var i, j, nodes = []; + if(lastmv) { + for(i = 0, j = data.data.nodes.length; i < j; i++) { + nodes[i] = data.data.origin ? data.data.origin.get_node(data.data.nodes[i]) : data.data.nodes[i]; + } + lastmv.ins[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? 'copy_node' : 'move_node' ](nodes, lastmv.par, lastmv.pos, false, false, false, data.data.origin); + } + else { + i = $(data.event.target).closest('.jstree'); + if(i.length && laster && laster.error && laster.error === 'check') { + i = i.jstree(true); + if(i) { + i.settings.core.error.call(this, laster); + } + } + } + lastev = false; + lastmv = false; + }) + .on('keyup.jstree keydown.jstree', function (e, data) { + data = $.vakata.dnd._get(); + if(data && data.data && data.data.jstree) { + if (e.type === "keyup" && e.which === 27) { + if (opento) { clearTimeout(opento); } + lastmv = false; + laster = false; + lastev = false; + opento = false; + marker.hide().detach(); + $.vakata.dnd._clean(); + } else { + data.helper.find('.jstree-copy').first()[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (e.metaKey || e.ctrlKey))) ? 'show' : 'hide' ](); + if(lastev) { + lastev.metaKey = e.metaKey; + lastev.ctrlKey = e.ctrlKey; + $.vakata.dnd._trigger('move', lastev); + } + } + } + }); + }); + + // helpers + (function ($) { + $.vakata.html = { + div : $('
          '), + escape : function (str) { + return $.vakata.html.div.text(str).html(); + }, + strip : function (str) { + return $.vakata.html.div.empty().append($.parseHTML(str)).text(); + } + }; + // private variable + var vakata_dnd = { + element : false, + target : false, + is_down : false, + is_drag : false, + helper : false, + helper_w: 0, + data : false, + init_x : 0, + init_y : 0, + scroll_l: 0, + scroll_t: 0, + scroll_e: false, + scroll_i: false, + is_touch: false + }; + $.vakata.dnd = { + settings : { + scroll_speed : 10, + scroll_proximity : 20, + helper_left : 5, + helper_top : 10, + threshold : 5, + threshold_touch : 50 + }, + _trigger : function (event_name, e, data) { + if (data === undefined) { + data = $.vakata.dnd._get(); + } + data.event = e; + $(document).triggerHandler("dnd_" + event_name + ".vakata", data); + }, + _get : function () { + return { + "data" : vakata_dnd.data, + "element" : vakata_dnd.element, + "helper" : vakata_dnd.helper + }; + }, + _clean : function () { + if(vakata_dnd.helper) { vakata_dnd.helper.remove(); } + if(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; } + vakata_dnd = { + element : false, + target : false, + is_down : false, + is_drag : false, + helper : false, + helper_w: 0, + data : false, + init_x : 0, + init_y : 0, + scroll_l: 0, + scroll_t: 0, + scroll_e: false, + scroll_i: false, + is_touch: false + }; + $(document).off("mousemove.vakata.jstree touchmove.vakata.jstree", $.vakata.dnd.drag); + $(document).off("mouseup.vakata.jstree touchend.vakata.jstree", $.vakata.dnd.stop); + }, + _scroll : function (init_only) { + if(!vakata_dnd.scroll_e || (!vakata_dnd.scroll_l && !vakata_dnd.scroll_t)) { + if(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; } + return false; + } + if(!vakata_dnd.scroll_i) { + vakata_dnd.scroll_i = setInterval($.vakata.dnd._scroll, 100); + return false; + } + if(init_only === true) { return false; } + + var i = vakata_dnd.scroll_e.scrollTop(), + j = vakata_dnd.scroll_e.scrollLeft(); + vakata_dnd.scroll_e.scrollTop(i + vakata_dnd.scroll_t * $.vakata.dnd.settings.scroll_speed); + vakata_dnd.scroll_e.scrollLeft(j + vakata_dnd.scroll_l * $.vakata.dnd.settings.scroll_speed); + if(i !== vakata_dnd.scroll_e.scrollTop() || j !== vakata_dnd.scroll_e.scrollLeft()) { + /** + * triggered on the document when a drag causes an element to scroll + * @event + * @plugin dnd + * @name dnd_scroll.vakata + * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start + * @param {DOM} element the DOM element being dragged + * @param {jQuery} helper the helper shown next to the mouse + * @param {jQuery} event the element that is scrolling + */ + $.vakata.dnd._trigger("scroll", vakata_dnd.scroll_e); + } + }, + start : function (e, data, html) { + if(e.type === "touchstart" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { + e.pageX = e.originalEvent.changedTouches[0].pageX; + e.pageY = e.originalEvent.changedTouches[0].pageY; + e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); + } + if(vakata_dnd.is_drag) { $.vakata.dnd.stop({}); } + try { + e.currentTarget.unselectable = "on"; + e.currentTarget.onselectstart = function() { return false; }; + if(e.currentTarget.style) { + e.currentTarget.style.touchAction = "none"; + e.currentTarget.style.msTouchAction = "none"; + e.currentTarget.style.MozUserSelect = "none"; + } + } catch(ignore) { } + vakata_dnd.init_x = e.pageX; + vakata_dnd.init_y = e.pageY; + vakata_dnd.data = data; + vakata_dnd.is_down = true; + vakata_dnd.element = e.currentTarget; + vakata_dnd.target = e.target; + vakata_dnd.is_touch = e.type === "touchstart"; + if(html !== false) { + vakata_dnd.helper = $("
          ").html(html).css({ + "display" : "block", + "margin" : "0", + "padding" : "0", + "position" : "absolute", + "top" : "-2000px", + "lineHeight" : "16px", + "zIndex" : "10000" + }); + } + $(document).on("mousemove.vakata.jstree touchmove.vakata.jstree", $.vakata.dnd.drag); + $(document).on("mouseup.vakata.jstree touchend.vakata.jstree", $.vakata.dnd.stop); + return false; + }, + drag : function (e) { + if(e.type === "touchmove" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { + e.pageX = e.originalEvent.changedTouches[0].pageX; + e.pageY = e.originalEvent.changedTouches[0].pageY; + e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); + } + if(!vakata_dnd.is_down) { return; } + if(!vakata_dnd.is_drag) { + if( + Math.abs(e.pageX - vakata_dnd.init_x) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) || + Math.abs(e.pageY - vakata_dnd.init_y) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) + ) { + if(vakata_dnd.helper) { + vakata_dnd.helper.appendTo("body"); + vakata_dnd.helper_w = vakata_dnd.helper.outerWidth(); + } + vakata_dnd.is_drag = true; + $(vakata_dnd.target).one('click.vakata', false); + /** + * triggered on the document when a drag starts + * @event + * @plugin dnd + * @name dnd_start.vakata + * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start + * @param {DOM} element the DOM element being dragged + * @param {jQuery} helper the helper shown next to the mouse + * @param {Object} event the event that caused the start (probably mousemove) + */ + $.vakata.dnd._trigger("start", e); + } + else { return; } + } + + var d = false, w = false, + dh = false, wh = false, + dw = false, ww = false, + dt = false, dl = false, + ht = false, hl = false; + + vakata_dnd.scroll_t = 0; + vakata_dnd.scroll_l = 0; + vakata_dnd.scroll_e = false; + $($(e.target).parentsUntil("body").addBack().get().reverse()) + .filter(function () { + return (/^auto|scroll$/).test($(this).css("overflow")) && + (this.scrollHeight > this.offsetHeight || this.scrollWidth > this.offsetWidth); + }) + .each(function () { + var t = $(this), o = t.offset(); + if(this.scrollHeight > this.offsetHeight) { + if(o.top + t.height() - e.pageY < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = 1; } + if(e.pageY - o.top < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = -1; } + } + if(this.scrollWidth > this.offsetWidth) { + if(o.left + t.width() - e.pageX < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = 1; } + if(e.pageX - o.left < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = -1; } + } + if(vakata_dnd.scroll_t || vakata_dnd.scroll_l) { + vakata_dnd.scroll_e = $(this); + return false; + } + }); + + if(!vakata_dnd.scroll_e) { + d = $(document); w = $(window); + dh = d.height(); wh = w.height(); + dw = d.width(); ww = w.width(); + dt = d.scrollTop(); dl = d.scrollLeft(); + if(dh > wh && e.pageY - dt < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = -1; } + if(dh > wh && wh - (e.pageY - dt) < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = 1; } + if(dw > ww && e.pageX - dl < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = -1; } + if(dw > ww && ww - (e.pageX - dl) < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = 1; } + if(vakata_dnd.scroll_t || vakata_dnd.scroll_l) { + vakata_dnd.scroll_e = d; + } + } + if(vakata_dnd.scroll_e) { $.vakata.dnd._scroll(true); } + + if(vakata_dnd.helper) { + ht = parseInt(e.pageY + $.vakata.dnd.settings.helper_top, 10); + hl = parseInt(e.pageX + $.vakata.dnd.settings.helper_left, 10); + if(dh && ht + 25 > dh) { ht = dh - 50; } + if(dw && hl + vakata_dnd.helper_w > dw) { hl = dw - (vakata_dnd.helper_w + 2); } + vakata_dnd.helper.css({ + left : hl + "px", + top : ht + "px" + }); + } + /** + * triggered on the document when a drag is in progress + * @event + * @plugin dnd + * @name dnd_move.vakata + * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start + * @param {DOM} element the DOM element being dragged + * @param {jQuery} helper the helper shown next to the mouse + * @param {Object} event the event that caused this to trigger (most likely mousemove) + */ + $.vakata.dnd._trigger("move", e); + return false; + }, + stop : function (e) { + if(e.type === "touchend" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { + e.pageX = e.originalEvent.changedTouches[0].pageX; + e.pageY = e.originalEvent.changedTouches[0].pageY; + e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); + } + if(vakata_dnd.is_drag) { + /** + * triggered on the document when a drag stops (the dragged element is dropped) + * @event + * @plugin dnd + * @name dnd_stop.vakata + * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start + * @param {DOM} element the DOM element being dragged + * @param {jQuery} helper the helper shown next to the mouse + * @param {Object} event the event that caused the stop + */ + if (e.target !== vakata_dnd.target) { + $(vakata_dnd.target).off('click.vakata'); + } + $.vakata.dnd._trigger("stop", e); + } + else { + if(e.type === "touchend" && e.target === vakata_dnd.target) { + var to = setTimeout(function () { $(e.target).click(); }, 100); + $(e.target).one('click', function() { if(to) { clearTimeout(to); } }); + } + } + $.vakata.dnd._clean(); + return false; + } + }; + }($)); + + // include the dnd plugin by default + // $.jstree.defaults.plugins.push("dnd"); +})); diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.js new file mode 100644 index 0000000000..a867704590 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.js @@ -0,0 +1,4810 @@ +/*! + * jsTree {{VERSION}} + * http://jstree.com/ + * + * Copyright (c) 2014 Ivan Bozhanov (http://vakata.com) + * + * Licensed same as jquery - under the terms of the MIT License + * http://www.opensource.org/licenses/mit-license.php + */ +/*! + * if using jslint please allow for the jQuery global and use following options: + * jslint: loopfunc: true, browser: true, ass: true, bitwise: true, continue: true, nomen: true, plusplus: true, regexp: true, unparam: true, todo: true, white: true + */ +/*jshint -W083 */ +/*globals jQuery, define, module, exports, require, window, document, postMessage */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } + else if(typeof module !== 'undefined' && module.exports) { + module.exports = factory(require('jquery')); + } + else { + factory(jQuery); + } +}(function ($, undefined) { + "use strict"; + + // prevent another load? maybe there is a better way? + if($.jstree) { + return; + } + + /** + * ### jsTree core functionality + */ + + // internal variables + var instance_counter = 0, + ccp_node = false, + ccp_mode = false, + ccp_inst = false, + themes_loaded = [], + src = $('script:last').attr('src'), + document = window.document; // local variable is always faster to access then a global + + /** + * holds all jstree related functions and variables, including the actual class and methods to create, access and manipulate instances. + * @name $.jstree + */ + $.jstree = { + /** + * specifies the jstree version in use + * @name $.jstree.version + */ + version : '{{VERSION}}', + /** + * holds all the default options used when creating new instances + * @name $.jstree.defaults + */ + defaults : { + /** + * configure which plugins will be active on an instance. Should be an array of strings, where each element is a plugin name. The default is `[]` + * @name $.jstree.defaults.plugins + */ + plugins : [] + }, + /** + * stores all loaded jstree plugins (used internally) + * @name $.jstree.plugins + */ + plugins : {}, + path : src && src.indexOf('/') !== -1 ? src.replace(/\/[^\/]+$/,'') : '', + idregex : /[\\:&!^|()\[\]<>@*'+~#";.,=\- \/${}%?`]/g, + root : '#' + }; + + /** + * creates a jstree instance + * @name $.jstree.create(el [, options]) + * @param {DOMElement|jQuery|String} el the element to create the instance on, can be jQuery extended or a selector + * @param {Object} options options for this instance (extends `$.jstree.defaults`) + * @return {jsTree} the new instance + */ + $.jstree.create = function (el, options) { + var tmp = new $.jstree.core(++instance_counter), + opt = options; + options = $.extend(true, {}, $.jstree.defaults, options); + if(opt && opt.plugins) { + options.plugins = opt.plugins; + } + $.each(options.plugins, function (i, k) { + if(i !== 'core') { + tmp = tmp.plugin(k, options[k]); + } + }); + $(el).data('jstree', tmp); + tmp.init(el, options); + return tmp; + }; + /** + * remove all traces of jstree from the DOM and destroy all instances + * @name $.jstree.destroy() + */ + $.jstree.destroy = function () { + $('.jstree:jstree').jstree('destroy'); + $(document).off('.jstree'); + }; + /** + * the jstree class constructor, used only internally + * @private + * @name $.jstree.core(id) + * @param {Number} id this instance's index + */ + $.jstree.core = function (id) { + this._id = id; + this._cnt = 0; + this._wrk = null; + this._data = { + core : { + themes : { + name : false, + dots : false, + icons : false, + ellipsis : false + }, + selected : [], + last_error : {}, + working : false, + worker_queue : [], + focused : null + } + }; + }; + /** + * get a reference to an existing instance + * + * __Examples__ + * + * // provided a container with an ID of "tree", and a nested node with an ID of "branch" + * // all of there will return the same instance + * $.jstree.reference('tree'); + * $.jstree.reference('#tree'); + * $.jstree.reference($('#tree')); + * $.jstree.reference(document.getElementByID('tree')); + * $.jstree.reference('branch'); + * $.jstree.reference('#branch'); + * $.jstree.reference($('#branch')); + * $.jstree.reference(document.getElementByID('branch')); + * + * @name $.jstree.reference(needle) + * @param {DOMElement|jQuery|String} needle + * @return {jsTree|null} the instance or `null` if not found + */ + $.jstree.reference = function (needle) { + var tmp = null, + obj = null; + if(needle && needle.id && (!needle.tagName || !needle.nodeType)) { needle = needle.id; } + + if(!obj || !obj.length) { + try { obj = $(needle); } catch (ignore) { } + } + if(!obj || !obj.length) { + try { obj = $('#' + needle.replace($.jstree.idregex,'\\$&')); } catch (ignore) { } + } + if(obj && obj.length && (obj = obj.closest('.jstree')).length && (obj = obj.data('jstree'))) { + tmp = obj; + } + else { + $('.jstree').each(function () { + var inst = $(this).data('jstree'); + if(inst && inst._model.data[needle]) { + tmp = inst; + return false; + } + }); + } + return tmp; + }; + /** + * Create an instance, get an instance or invoke a command on a instance. + * + * If there is no instance associated with the current node a new one is created and `arg` is used to extend `$.jstree.defaults` for this new instance. There would be no return value (chaining is not broken). + * + * If there is an existing instance and `arg` is a string the command specified by `arg` is executed on the instance, with any additional arguments passed to the function. If the function returns a value it will be returned (chaining could break depending on function). + * + * If there is an existing instance and `arg` is not a string the instance itself is returned (similar to `$.jstree.reference`). + * + * In any other case - nothing is returned and chaining is not broken. + * + * __Examples__ + * + * $('#tree1').jstree(); // creates an instance + * $('#tree2').jstree({ plugins : [] }); // create an instance with some options + * $('#tree1').jstree('open_node', '#branch_1'); // call a method on an existing instance, passing additional arguments + * $('#tree2').jstree(); // get an existing instance (or create an instance) + * $('#tree2').jstree(true); // get an existing instance (will not create new instance) + * $('#branch_1').jstree().select_node('#branch_1'); // get an instance (using a nested element and call a method) + * + * @name $().jstree([arg]) + * @param {String|Object} arg + * @return {Mixed} + */ + $.fn.jstree = function (arg) { + // check for string argument + var is_method = (typeof arg === 'string'), + args = Array.prototype.slice.call(arguments, 1), + result = null; + if(arg === true && !this.length) { return false; } + this.each(function () { + // get the instance (if there is one) and method (if it exists) + var instance = $.jstree.reference(this), + method = is_method && instance ? instance[arg] : null; + // if calling a method, and method is available - execute on the instance + result = is_method && method ? + method.apply(instance, args) : + null; + // if there is no instance and no method is being called - create one + if(!instance && !is_method && (arg === undefined || $.isPlainObject(arg))) { + $.jstree.create(this, arg); + } + // if there is an instance and no method is called - return the instance + if( (instance && !is_method) || arg === true ) { + result = instance || false; + } + // if there was a method call which returned a result - break and return the value + if(result !== null && result !== undefined) { + return false; + } + }); + // if there was a method call with a valid return value - return that, otherwise continue the chain + return result !== null && result !== undefined ? + result : this; + }; + /** + * used to find elements containing an instance + * + * __Examples__ + * + * $('div:jstree').each(function () { + * $(this).jstree('destroy'); + * }); + * + * @name $(':jstree') + * @return {jQuery} + */ + $.expr.pseudos.jstree = $.expr.createPseudo(function(search) { + return function(a) { + return $(a).hasClass('jstree') && + $(a).data('jstree') !== undefined; + }; + }); + + /** + * stores all defaults for the core + * @name $.jstree.defaults.core + */ + $.jstree.defaults.core = { + /** + * data configuration + * + * If left as `false` the HTML inside the jstree container element is used to populate the tree (that should be an unordered list with list items). + * + * You can also pass in a HTML string or a JSON array here. + * + * It is possible to pass in a standard jQuery-like AJAX config and jstree will automatically determine if the response is JSON or HTML and use that to populate the tree. + * In addition to the standard jQuery ajax options here you can suppy functions for `data` and `url`, the functions will be run in the current instance's scope and a param will be passed indicating which node is being loaded, the return value of those functions will be used. + * + * The last option is to specify a function, that function will receive the node being loaded as argument and a second param which is a function which should be called with the result. + * + * __Examples__ + * + * // AJAX + * $('#tree').jstree({ + * 'core' : { + * 'data' : { + * 'url' : '/get/children/', + * 'data' : function (node) { + * return { 'id' : node.id }; + * } + * } + * }); + * + * // direct data + * $('#tree').jstree({ + * 'core' : { + * 'data' : [ + * 'Simple root node', + * { + * 'id' : 'node_2', + * 'text' : 'Root node with options', + * 'state' : { 'opened' : true, 'selected' : true }, + * 'children' : [ { 'text' : 'Child 1' }, 'Child 2'] + * } + * ] + * } + * }); + * + * // function + * $('#tree').jstree({ + * 'core' : { + * 'data' : function (obj, callback) { + * callback.call(this, ['Root 1', 'Root 2']); + * } + * }); + * + * @name $.jstree.defaults.core.data + */ + data : false, + /** + * configure the various strings used throughout the tree + * + * You can use an object where the key is the string you need to replace and the value is your replacement. + * Another option is to specify a function which will be called with an argument of the needed string and should return the replacement. + * If left as `false` no replacement is made. + * + * __Examples__ + * + * $('#tree').jstree({ + * 'core' : { + * 'strings' : { + * 'Loading ...' : 'Please wait ...' + * } + * } + * }); + * + * @name $.jstree.defaults.core.strings + */ + strings : false, + /** + * determines what happens when a user tries to modify the structure of the tree + * If left as `false` all operations like create, rename, delete, move or copy are prevented. + * You can set this to `true` to allow all interactions or use a function to have better control. + * + * __Examples__ + * + * $('#tree').jstree({ + * 'core' : { + * 'check_callback' : function (operation, node, node_parent, node_position, more) { + * // operation can be 'create_node', 'rename_node', 'delete_node', 'move_node' or 'copy_node' + * // in case of 'rename_node' node_position is filled with the new node name + * return operation === 'rename_node' ? true : false; + * } + * } + * }); + * + * @name $.jstree.defaults.core.check_callback + */ + check_callback : false, + /** + * a callback called with a single object parameter in the instance's scope when something goes wrong (operation prevented, ajax failed, etc) + * @name $.jstree.defaults.core.error + */ + error : $.noop, + /** + * the open / close animation duration in milliseconds - set this to `false` to disable the animation (default is `200`) + * @name $.jstree.defaults.core.animation + */ + animation : 200, + /** + * a boolean indicating if multiple nodes can be selected + * @name $.jstree.defaults.core.multiple + */ + multiple : true, + /** + * theme configuration object + * @name $.jstree.defaults.core.themes + */ + themes : { + /** + * the name of the theme to use (if left as `false` the default theme is used) + * @name $.jstree.defaults.core.themes.name + */ + name : false, + /** + * the URL of the theme's CSS file, leave this as `false` if you have manually included the theme CSS (recommended). You can set this to `true` too which will try to autoload the theme. + * @name $.jstree.defaults.core.themes.url + */ + url : false, + /** + * the location of all jstree themes - only used if `url` is set to `true` + * @name $.jstree.defaults.core.themes.dir + */ + dir : false, + /** + * a boolean indicating if connecting dots are shown + * @name $.jstree.defaults.core.themes.dots + */ + dots : true, + /** + * a boolean indicating if node icons are shown + * @name $.jstree.defaults.core.themes.icons + */ + icons : true, + /** + * a boolean indicating if node ellipsis should be shown - this only works with a fixed with on the container + * @name $.jstree.defaults.core.themes.ellipsis + */ + ellipsis : false, + /** + * a boolean indicating if the tree background is striped + * @name $.jstree.defaults.core.themes.stripes + */ + stripes : false, + /** + * a string (or boolean `false`) specifying the theme variant to use (if the theme supports variants) + * @name $.jstree.defaults.core.themes.variant + */ + variant : false, + /** + * a boolean specifying if a reponsive version of the theme should kick in on smaller screens (if the theme supports it). Defaults to `false`. + * @name $.jstree.defaults.core.themes.responsive + */ + responsive : false + }, + /** + * if left as `true` all parents of all selected nodes will be opened once the tree loads (so that all selected nodes are visible to the user) + * @name $.jstree.defaults.core.expand_selected_onload + */ + expand_selected_onload : true, + /** + * if left as `true` web workers will be used to parse incoming JSON data where possible, so that the UI will not be blocked by large requests. Workers are however about 30% slower. Defaults to `true` + * @name $.jstree.defaults.core.worker + */ + worker : true, + /** + * Force node text to plain text (and escape HTML). Defaults to `false` + * @name $.jstree.defaults.core.force_text + */ + force_text : false, + /** + * Should the node should be toggled if the text is double clicked . Defaults to `true` + * @name $.jstree.defaults.core.dblclick_toggle + */ + dblclick_toggle : true + }; + $.jstree.core.prototype = { + /** + * used to decorate an instance with a plugin. Used internally. + * @private + * @name plugin(deco [, opts]) + * @param {String} deco the plugin to decorate with + * @param {Object} opts options for the plugin + * @return {jsTree} + */ + plugin : function (deco, opts) { + var Child = $.jstree.plugins[deco]; + if(Child) { + this._data[deco] = {}; + Child.prototype = this; + return new Child(opts, this); + } + return this; + }, + /** + * initialize the instance. Used internally. + * @private + * @name init(el, optons) + * @param {DOMElement|jQuery|String} el the element we are transforming + * @param {Object} options options for this instance + * @trigger init.jstree, loading.jstree, loaded.jstree, ready.jstree, changed.jstree + */ + init : function (el, options) { + this._model = { + data : {}, + changed : [], + force_full_redraw : false, + redraw_timeout : false, + default_state : { + loaded : true, + opened : false, + selected : false, + disabled : false + } + }; + this._model.data[$.jstree.root] = { + id : $.jstree.root, + parent : null, + parents : [], + children : [], + children_d : [], + state : { loaded : false } + }; + + this.element = $(el).addClass('jstree jstree-' + this._id); + this.settings = options; + + this._data.core.ready = false; + this._data.core.loaded = false; + this._data.core.rtl = (this.element.css("direction") === "rtl"); + this.element[this._data.core.rtl ? 'addClass' : 'removeClass']("jstree-rtl"); + this.element.attr('role','tree'); + if(this.settings.core.multiple) { + this.element.attr('aria-multiselectable', true); + } + if(!this.element.attr('tabindex')) { + this.element.attr('tabindex','0'); + } + + this.bind(); + /** + * triggered after all events are bound + * @event + * @name init.jstree + */ + this.trigger("init"); + + this._data.core.original_container_html = this.element.find(" > ul > li").clone(true); + this._data.core.original_container_html + .find("li").addBack() + .contents().filter(function() { + return this.nodeType === 3 && (!this.nodeValue || /^\s+$/.test(this.nodeValue)); + }) + .remove(); + this.element.html("<"+"ul class='jstree-container-ul jstree-children' role='group'><"+"li id='j"+this._id+"_loading' class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='tree-item'><"+"a class='jstree-anchor' href='#'>" + this.get_string("Loading ...") + "
        • "); + this.element.attr('aria-activedescendant','j' + this._id + '_loading'); + this._data.core.li_height = this.get_container_ul().children("li").first().height() || 24; + this._data.core.node = this._create_prototype_node(); + /** + * triggered after the loading text is shown and before loading starts + * @event + * @name loading.jstree + */ + this.trigger("loading"); + this.load_node($.jstree.root); + }, + /** + * destroy an instance + * @name destroy() + * @param {Boolean} keep_html if not set to `true` the container will be emptied, otherwise the current DOM elements will be kept intact + */ + destroy : function (keep_html) { + if(this._wrk) { + try { + window.URL.revokeObjectURL(this._wrk); + this._wrk = null; + } + catch (ignore) { } + } + if(!keep_html) { this.element.empty(); } + this.teardown(); + }, + /** + * Create prototype node + */ + _create_prototype_node : function () { + var _node = document.createElement('LI'), _temp1, _temp2; + _node.setAttribute('role', 'treeitem'); + _temp1 = document.createElement('I'); + _temp1.className = 'jstree-icon jstree-ocl'; + _temp1.setAttribute('role', 'presentation'); + _node.appendChild(_temp1); + _temp1 = document.createElement('A'); + _temp1.className = 'jstree-anchor'; + _temp1.setAttribute('href','#'); + _temp1.setAttribute('tabindex','-1'); + _temp2 = document.createElement('I'); + _temp2.className = 'jstree-icon jstree-themeicon'; + _temp2.setAttribute('role', 'presentation'); + _temp1.appendChild(_temp2); + _node.appendChild(_temp1); + _temp1 = _temp2 = null; + + return _node; + }, + /** + * part of the destroying of an instance. Used internally. + * @private + * @name teardown() + */ + teardown : function () { + this.unbind(); + this.element + .removeClass('jstree') + .removeData('jstree') + .find("[class^='jstree']") + .addBack() + .attr("class", function () { return this.className.replace(/jstree[^ ]*|$/ig,''); }); + this.element = null; + }, + /** + * bind all events. Used internally. + * @private + * @name bind() + */ + bind : function () { + var word = '', + tout = null, + was_click = 0; + this.element + .on("dblclick.jstree", function (e) { + if(e.target.tagName && e.target.tagName.toLowerCase() === "input") { return true; } + if(document.selection && document.selection.empty) { + document.selection.empty(); + } + else { + if(window.getSelection) { + var sel = window.getSelection(); + try { + sel.removeAllRanges(); + sel.collapse(); + } catch (ignore) { } + } + } + }) + .on("mousedown.jstree", $.proxy(function (e) { + if(e.target === this.element[0]) { + e.preventDefault(); // prevent losing focus when clicking scroll arrows (FF, Chrome) + was_click = +(new Date()); // ie does not allow to prevent losing focus + } + }, this)) + .on("mousedown.jstree", ".jstree-ocl", function (e) { + e.preventDefault(); // prevent any node inside from losing focus when clicking the open/close icon + }) + .on("click.jstree", ".jstree-ocl", $.proxy(function (e) { + this.toggle_node(e.target); + }, this)) + .on("dblclick.jstree", ".jstree-anchor", $.proxy(function (e) { + if(e.target.tagName && e.target.tagName.toLowerCase() === "input") { return true; } + if(this.settings.core.dblclick_toggle) { + this.toggle_node(e.target); + } + }, this)) + .on("click.jstree", ".jstree-anchor", $.proxy(function (e) { + e.preventDefault(); + if(e.currentTarget !== document.activeElement) { $(e.currentTarget).focus(); } + this.activate_node(e.currentTarget, e); + }, this)) + .on('keydown.jstree', '.jstree-anchor', $.proxy(function (e) { + if(e.target.tagName && e.target.tagName.toLowerCase() === "input") { return true; } + if(e.which !== 32 && e.which !== 13 && (e.shiftKey || e.ctrlKey || e.altKey || e.metaKey)) { return true; } + var o = null; + if(this._data.core.rtl) { + if(e.which === 37) { e.which = 39; } + else if(e.which === 39) { e.which = 37; } + } + switch(e.which) { + case 32: // aria defines space only with Ctrl + if(e.ctrlKey) { + e.type = "click"; + $(e.currentTarget).trigger(e); + } + break; + case 13: // enter + e.type = "click"; + $(e.currentTarget).trigger(e); + break; + case 37: // left + e.preventDefault(); + if(this.is_open(e.currentTarget)) { + this.close_node(e.currentTarget); + } + else { + o = this.get_parent(e.currentTarget); + if(o && o.id !== $.jstree.root) { this.get_node(o, true).children('.jstree-anchor').focus(); } + } + break; + case 38: // up + e.preventDefault(); + o = this.get_prev_dom(e.currentTarget); + if(o && o.length) { o.children('.jstree-anchor').focus(); } + break; + case 39: // right + e.preventDefault(); + if(this.is_closed(e.currentTarget)) { + this.open_node(e.currentTarget, function (o) { this.get_node(o, true).children('.jstree-anchor').focus(); }); + } + else if (this.is_open(e.currentTarget)) { + o = this.get_node(e.currentTarget, true).children('.jstree-children')[0]; + if(o) { $(this._firstChild(o)).children('.jstree-anchor').focus(); } + } + break; + case 40: // down + e.preventDefault(); + o = this.get_next_dom(e.currentTarget); + if(o && o.length) { o.children('.jstree-anchor').focus(); } + break; + case 106: // aria defines * on numpad as open_all - not very common + this.open_all(); + break; + case 36: // home + e.preventDefault(); + o = this._firstChild(this.get_container_ul()[0]); + if(o) { $(o).children('.jstree-anchor').filter(':visible').focus(); } + break; + case 35: // end + e.preventDefault(); + this.element.find('.jstree-anchor').filter(':visible').last().focus(); + break; + case 113: // f2 - safe to include - if check_callback is false it will fail + e.preventDefault(); + this.edit(e.currentTarget); + break; + default: + break; + /*! + // delete + case 46: + e.preventDefault(); + o = this.get_node(e.currentTarget); + if(o && o.id && o.id !== $.jstree.root) { + o = this.is_selected(o) ? this.get_selected() : o; + this.delete_node(o); + } + break; + + */ + } + }, this)) + .on("load_node.jstree", $.proxy(function (e, data) { + if(data.status) { + if(data.node.id === $.jstree.root && !this._data.core.loaded) { + this._data.core.loaded = true; + if(this._firstChild(this.get_container_ul()[0])) { + this.element.attr('aria-activedescendant',this._firstChild(this.get_container_ul()[0]).id); + } + /** + * triggered after the root node is loaded for the first time + * @event + * @name loaded.jstree + */ + this.trigger("loaded"); + } + if(!this._data.core.ready) { + setTimeout($.proxy(function() { + if(this.element && !this.get_container_ul().find('.jstree-loading').length) { + this._data.core.ready = true; + if(this._data.core.selected.length) { + if(this.settings.core.expand_selected_onload) { + var tmp = [], i, j; + for(i = 0, j = this._data.core.selected.length; i < j; i++) { + tmp = tmp.concat(this._model.data[this._data.core.selected[i]].parents); + } + tmp = $.vakata.array_unique(tmp); + for(i = 0, j = tmp.length; i < j; i++) { + this.open_node(tmp[i], false, 0); + } + } + this.trigger('changed', { 'action' : 'ready', 'selected' : this._data.core.selected }); + } + /** + * triggered after all nodes are finished loading + * @event + * @name ready.jstree + */ + this.trigger("ready"); + } + }, this), 0); + } + } + }, this)) + // quick searching when the tree is focused + .on('keypress.jstree', $.proxy(function (e) { + if(e.target.tagName && e.target.tagName.toLowerCase() === "input") { return true; } + if(tout) { clearTimeout(tout); } + tout = setTimeout(function () { + word = ''; + }, 500); + + var chr = String.fromCharCode(e.which).toLowerCase(), + col = this.element.find('.jstree-anchor').filter(':visible'), + ind = col.index(document.activeElement) || 0, + end = false; + word += chr; + + // match for whole word from current node down (including the current node) + if(word.length > 1) { + col.slice(ind).each($.proxy(function (i, v) { + if($(v).text().toLowerCase().indexOf(word) === 0) { + $(v).focus(); + end = true; + return false; + } + }, this)); + if(end) { return; } + + // match for whole word from the beginning of the tree + col.slice(0, ind).each($.proxy(function (i, v) { + if($(v).text().toLowerCase().indexOf(word) === 0) { + $(v).focus(); + end = true; + return false; + } + }, this)); + if(end) { return; } + } + // list nodes that start with that letter (only if word consists of a single char) + if(new RegExp('^' + chr.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + '+$').test(word)) { + // search for the next node starting with that letter + col.slice(ind + 1).each($.proxy(function (i, v) { + if($(v).text().toLowerCase().charAt(0) === chr) { + $(v).focus(); + end = true; + return false; + } + }, this)); + if(end) { return; } + + // search from the beginning + col.slice(0, ind + 1).each($.proxy(function (i, v) { + if($(v).text().toLowerCase().charAt(0) === chr) { + $(v).focus(); + end = true; + return false; + } + }, this)); + if(end) { return; } + } + }, this)) + // THEME RELATED + .on("init.jstree", $.proxy(function () { + var s = this.settings.core.themes; + this._data.core.themes.dots = s.dots; + this._data.core.themes.stripes = s.stripes; + this._data.core.themes.icons = s.icons; + this._data.core.themes.ellipsis = s.ellipsis; + this.set_theme(s.name || "default", s.url); + this.set_theme_variant(s.variant); + }, this)) + .on("loading.jstree", $.proxy(function () { + this[ this._data.core.themes.dots ? "show_dots" : "hide_dots" ](); + this[ this._data.core.themes.icons ? "show_icons" : "hide_icons" ](); + this[ this._data.core.themes.stripes ? "show_stripes" : "hide_stripes" ](); + this[ this._data.core.themes.ellipsis ? "show_ellipsis" : "hide_ellipsis" ](); + }, this)) + .on('blur.jstree', '.jstree-anchor', $.proxy(function (e) { + this._data.core.focused = null; + $(e.currentTarget).filter('.jstree-hovered').mouseleave(); + this.element.attr('tabindex', '0'); + }, this)) + .on('focus.jstree', '.jstree-anchor', $.proxy(function (e) { + var tmp = this.get_node(e.currentTarget); + if(tmp && tmp.id) { + this._data.core.focused = tmp.id; + } + this.element.find('.jstree-hovered').not(e.currentTarget).mouseleave(); + $(e.currentTarget).mouseenter(); + this.element.attr('tabindex', '-1'); + }, this)) + .on('focus.jstree', $.proxy(function () { + if(+(new Date()) - was_click > 500 && !this._data.core.focused) { + was_click = 0; + var act = this.get_node(this.element.attr('aria-activedescendant'), true); + if(act) { + act.find('> .jstree-anchor').focus(); + } + } + }, this)) + .on('mouseenter.jstree', '.jstree-anchor', $.proxy(function (e) { + this.hover_node(e.currentTarget); + }, this)) + .on('mouseleave.jstree', '.jstree-anchor', $.proxy(function (e) { + this.dehover_node(e.currentTarget); + }, this)); + }, + /** + * part of the destroying of an instance. Used internally. + * @private + * @name unbind() + */ + unbind : function () { + this.element.off('.jstree'); + $(document).off('.jstree-' + this._id); + }, + /** + * trigger an event. Used internally. + * @private + * @name trigger(ev [, data]) + * @param {String} ev the name of the event to trigger + * @param {Object} data additional data to pass with the event + */ + trigger : function (ev, data) { + if(!data) { + data = {}; + } + data.instance = this; + this.element.triggerHandler(ev.replace('.jstree','') + '.jstree', data); + }, + /** + * returns the jQuery extended instance container + * @name get_container() + * @return {jQuery} + */ + get_container : function () { + return this.element; + }, + /** + * returns the jQuery extended main UL node inside the instance container. Used internally. + * @private + * @name get_container_ul() + * @return {jQuery} + */ + get_container_ul : function () { + return this.element.children(".jstree-children").first(); + }, + /** + * gets string replacements (localization). Used internally. + * @private + * @name get_string(key) + * @param {String} key + * @return {String} + */ + get_string : function (key) { + var a = this.settings.core.strings; + if($.isFunction(a)) { return a.call(this, key); } + if(a && a[key]) { return a[key]; } + return key; + }, + /** + * gets the first child of a DOM node. Used internally. + * @private + * @name _firstChild(dom) + * @param {DOMElement} dom + * @return {DOMElement} + */ + _firstChild : function (dom) { + dom = dom ? dom.firstChild : null; + while(dom !== null && dom.nodeType !== 1) { + dom = dom.nextSibling; + } + return dom; + }, + /** + * gets the next sibling of a DOM node. Used internally. + * @private + * @name _nextSibling(dom) + * @param {DOMElement} dom + * @return {DOMElement} + */ + _nextSibling : function (dom) { + dom = dom ? dom.nextSibling : null; + while(dom !== null && dom.nodeType !== 1) { + dom = dom.nextSibling; + } + return dom; + }, + /** + * gets the previous sibling of a DOM node. Used internally. + * @private + * @name _previousSibling(dom) + * @param {DOMElement} dom + * @return {DOMElement} + */ + _previousSibling : function (dom) { + dom = dom ? dom.previousSibling : null; + while(dom !== null && dom.nodeType !== 1) { + dom = dom.previousSibling; + } + return dom; + }, + /** + * get the JSON representation of a node (or the actual jQuery extended DOM node) by using any input (child DOM element, ID string, selector, etc) + * @name get_node(obj [, as_dom]) + * @param {mixed} obj + * @param {Boolean} as_dom + * @return {Object|jQuery} + */ + get_node : function (obj, as_dom) { + if(obj && obj.id) { + obj = obj.id; + } + var dom; + try { + if(this._model.data[obj]) { + obj = this._model.data[obj]; + } + else if(typeof obj === "string" && this._model.data[obj.replace(/^#/, '')]) { + obj = this._model.data[obj.replace(/^#/, '')]; + } + else if(typeof obj === "string" && (dom = $('#' + obj.replace($.jstree.idregex,'\\$&'), this.element)).length && this._model.data[dom.closest('.jstree-node').attr('id')]) { + obj = this._model.data[dom.closest('.jstree-node').attr('id')]; + } + else if((dom = $(obj, this.element)).length && this._model.data[dom.closest('.jstree-node').attr('id')]) { + obj = this._model.data[dom.closest('.jstree-node').attr('id')]; + } + else if((dom = $(obj, this.element)).length && dom.hasClass('jstree')) { + obj = this._model.data[$.jstree.root]; + } + else { + return false; + } + + if(as_dom) { + obj = obj.id === $.jstree.root ? this.element : $('#' + obj.id.replace($.jstree.idregex,'\\$&'), this.element); + } + return obj; + } catch (ex) { return false; } + }, + /** + * get the path to a node, either consisting of node texts, or of node IDs, optionally glued together (otherwise an array) + * @name get_path(obj [, glue, ids]) + * @param {mixed} obj the node + * @param {String} glue if you want the path as a string - pass the glue here (for example '/'), if a falsy value is supplied here, an array is returned + * @param {Boolean} ids if set to true build the path using ID, otherwise node text is used + * @return {mixed} + */ + get_path : function (obj, glue, ids) { + obj = obj.parents ? obj : this.get_node(obj); + if(!obj || obj.id === $.jstree.root || !obj.parents) { + return false; + } + var i, j, p = []; + p.push(ids ? obj.id : obj.text); + for(i = 0, j = obj.parents.length; i < j; i++) { + p.push(ids ? obj.parents[i] : this.get_text(obj.parents[i])); + } + p = p.reverse().slice(1); + return glue ? p.join(glue) : p; + }, + /** + * get the next visible node that is below the `obj` node. If `strict` is set to `true` only sibling nodes are returned. + * @name get_next_dom(obj [, strict]) + * @param {mixed} obj + * @param {Boolean} strict + * @return {jQuery} + */ + get_next_dom : function (obj, strict) { + var tmp; + obj = this.get_node(obj, true); + if(obj[0] === this.element[0]) { + tmp = this._firstChild(this.get_container_ul()[0]); + while (tmp && tmp.offsetHeight === 0) { + tmp = this._nextSibling(tmp); + } + return tmp ? $(tmp) : false; + } + if(!obj || !obj.length) { + return false; + } + if(strict) { + tmp = obj[0]; + do { + tmp = this._nextSibling(tmp); + } while (tmp && tmp.offsetHeight === 0); + return tmp ? $(tmp) : false; + } + if(obj.hasClass("jstree-open")) { + tmp = this._firstChild(obj.children('.jstree-children')[0]); + while (tmp && tmp.offsetHeight === 0) { + tmp = this._nextSibling(tmp); + } + if(tmp !== null) { + return $(tmp); + } + } + tmp = obj[0]; + do { + tmp = this._nextSibling(tmp); + } while (tmp && tmp.offsetHeight === 0); + if(tmp !== null) { + return $(tmp); + } + return obj.parentsUntil(".jstree",".jstree-node").nextAll(".jstree-node:visible").first(); + }, + /** + * get the previous visible node that is above the `obj` node. If `strict` is set to `true` only sibling nodes are returned. + * @name get_prev_dom(obj [, strict]) + * @param {mixed} obj + * @param {Boolean} strict + * @return {jQuery} + */ + get_prev_dom : function (obj, strict) { + var tmp; + obj = this.get_node(obj, true); + if(obj[0] === this.element[0]) { + tmp = this.get_container_ul()[0].lastChild; + while (tmp && tmp.offsetHeight === 0) { + tmp = this._previousSibling(tmp); + } + return tmp ? $(tmp) : false; + } + if(!obj || !obj.length) { + return false; + } + if(strict) { + tmp = obj[0]; + do { + tmp = this._previousSibling(tmp); + } while (tmp && tmp.offsetHeight === 0); + return tmp ? $(tmp) : false; + } + tmp = obj[0]; + do { + tmp = this._previousSibling(tmp); + } while (tmp && tmp.offsetHeight === 0); + if(tmp !== null) { + obj = $(tmp); + while(obj.hasClass("jstree-open")) { + obj = obj.children(".jstree-children").first().children(".jstree-node:visible:last"); + } + return obj; + } + tmp = obj[0].parentNode.parentNode; + return tmp && tmp.className && tmp.className.indexOf('jstree-node') !== -1 ? $(tmp) : false; + }, + /** + * get the parent ID of a node + * @name get_parent(obj) + * @param {mixed} obj + * @return {String} + */ + get_parent : function (obj) { + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + return obj.parent; + }, + /** + * get a jQuery collection of all the children of a node (node must be rendered) + * @name get_children_dom(obj) + * @param {mixed} obj + * @return {jQuery} + */ + get_children_dom : function (obj) { + obj = this.get_node(obj, true); + if(obj[0] === this.element[0]) { + return this.get_container_ul().children(".jstree-node"); + } + if(!obj || !obj.length) { + return false; + } + return obj.children(".jstree-children").children(".jstree-node"); + }, + /** + * checks if a node has children + * @name is_parent(obj) + * @param {mixed} obj + * @return {Boolean} + */ + is_parent : function (obj) { + obj = this.get_node(obj); + return obj && (obj.state.loaded === false || obj.children.length > 0); + }, + /** + * checks if a node is loaded (its children are available) + * @name is_loaded(obj) + * @param {mixed} obj + * @return {Boolean} + */ + is_loaded : function (obj) { + obj = this.get_node(obj); + return obj && obj.state.loaded; + }, + /** + * check if a node is currently loading (fetching children) + * @name is_loading(obj) + * @param {mixed} obj + * @return {Boolean} + */ + is_loading : function (obj) { + obj = this.get_node(obj); + return obj && obj.state && obj.state.loading; + }, + /** + * check if a node is opened + * @name is_open(obj) + * @param {mixed} obj + * @return {Boolean} + */ + is_open : function (obj) { + obj = this.get_node(obj); + return obj && obj.state.opened; + }, + /** + * check if a node is in a closed state + * @name is_closed(obj) + * @param {mixed} obj + * @return {Boolean} + */ + is_closed : function (obj) { + obj = this.get_node(obj); + return obj && this.is_parent(obj) && !obj.state.opened; + }, + /** + * check if a node has no children + * @name is_leaf(obj) + * @param {mixed} obj + * @return {Boolean} + */ + is_leaf : function (obj) { + return !this.is_parent(obj); + }, + /** + * loads a node (fetches its children using the `core.data` setting). Multiple nodes can be passed to by using an array. + * @name load_node(obj [, callback]) + * @param {mixed} obj + * @param {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives two arguments - the node and a boolean status + * @return {Boolean} + * @trigger load_node.jstree + */ + load_node : function (obj, callback) { + var k, l, i, j, c; + if($.isArray(obj)) { + this._load_nodes(obj.slice(), callback); + return true; + } + obj = this.get_node(obj); + if(!obj) { + if(callback) { callback.call(this, obj, false); } + return false; + } + // if(obj.state.loading) { } // the node is already loading - just wait for it to load and invoke callback? but if called implicitly it should be loaded again? + if(obj.state.loaded) { + obj.state.loaded = false; + for(i = 0, j = obj.parents.length; i < j; i++) { + this._model.data[obj.parents[i]].children_d = $.vakata.array_filter(this._model.data[obj.parents[i]].children_d, function (v) { + return $.inArray(v, obj.children_d) === -1; + }); + } + for(k = 0, l = obj.children_d.length; k < l; k++) { + if(this._model.data[obj.children_d[k]].state.selected) { + c = true; + } + delete this._model.data[obj.children_d[k]]; + } + if (c) { + this._data.core.selected = $.vakata.array_filter(this._data.core.selected, function (v) { + return $.inArray(v, obj.children_d) === -1; + }); + } + obj.children = []; + obj.children_d = []; + if(c) { + this.trigger('changed', { 'action' : 'load_node', 'node' : obj, 'selected' : this._data.core.selected }); + } + } + obj.state.failed = false; + obj.state.loading = true; + this.get_node(obj, true).addClass("jstree-loading").attr('aria-busy',true); + this._load_node(obj, $.proxy(function (status) { + obj = this._model.data[obj.id]; + obj.state.loading = false; + obj.state.loaded = status; + obj.state.failed = !obj.state.loaded; + var dom = this.get_node(obj, true), i = 0, j = 0, m = this._model.data, has_children = false; + for(i = 0, j = obj.children.length; i < j; i++) { + if(m[obj.children[i]] && !m[obj.children[i]].state.hidden) { + has_children = true; + break; + } + } + if(obj.state.loaded && dom && dom.length) { + dom.removeClass('jstree-closed jstree-open jstree-leaf'); + if (!has_children) { + dom.addClass('jstree-leaf'); + } + else { + if (obj.id !== '#') { + dom.addClass(obj.state.opened ? 'jstree-open' : 'jstree-closed'); + } + } + } + dom.removeClass("jstree-loading").attr('aria-busy',false); + /** + * triggered after a node is loaded + * @event + * @name load_node.jstree + * @param {Object} node the node that was loading + * @param {Boolean} status was the node loaded successfully + */ + this.trigger('load_node', { "node" : obj, "status" : status }); + if(callback) { + callback.call(this, obj, status); + } + }, this)); + return true; + }, + /** + * load an array of nodes (will also load unavailable nodes as soon as the appear in the structure). Used internally. + * @private + * @name _load_nodes(nodes [, callback]) + * @param {array} nodes + * @param {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives one argument - the array passed to _load_nodes + */ + _load_nodes : function (nodes, callback, is_callback, force_reload) { + var r = true, + c = function () { this._load_nodes(nodes, callback, true); }, + m = this._model.data, i, j, tmp = []; + for(i = 0, j = nodes.length; i < j; i++) { + if(m[nodes[i]] && ( (!m[nodes[i]].state.loaded && !m[nodes[i]].state.failed) || (!is_callback && force_reload) )) { + if(!this.is_loading(nodes[i])) { + this.load_node(nodes[i], c); + } + r = false; + } + } + if(r) { + for(i = 0, j = nodes.length; i < j; i++) { + if(m[nodes[i]] && m[nodes[i]].state.loaded) { + tmp.push(nodes[i]); + } + } + if(callback && !callback.done) { + callback.call(this, tmp); + callback.done = true; + } + } + }, + /** + * loads all unloaded nodes + * @name load_all([obj, callback]) + * @param {mixed} obj the node to load recursively, omit to load all nodes in the tree + * @param {function} callback a function to be executed once loading all the nodes is complete, + * @trigger load_all.jstree + */ + load_all : function (obj, callback) { + if(!obj) { obj = $.jstree.root; } + obj = this.get_node(obj); + if(!obj) { return false; } + var to_load = [], + m = this._model.data, + c = m[obj.id].children_d, + i, j; + if(obj.state && !obj.state.loaded) { + to_load.push(obj.id); + } + for(i = 0, j = c.length; i < j; i++) { + if(m[c[i]] && m[c[i]].state && !m[c[i]].state.loaded) { + to_load.push(c[i]); + } + } + if(to_load.length) { + this._load_nodes(to_load, function () { + this.load_all(obj, callback); + }); + } + else { + /** + * triggered after a load_all call completes + * @event + * @name load_all.jstree + * @param {Object} node the recursively loaded node + */ + if(callback) { callback.call(this, obj); } + this.trigger('load_all', { "node" : obj }); + } + }, + /** + * handles the actual loading of a node. Used only internally. + * @private + * @name _load_node(obj [, callback]) + * @param {mixed} obj + * @param {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives one argument - a boolean status + * @return {Boolean} + */ + _load_node : function (obj, callback) { + var s = this.settings.core.data, t; + var notTextOrCommentNode = function notTextOrCommentNode () { + return this.nodeType !== 3 && this.nodeType !== 8; + }; + // use original HTML + if(!s) { + if(obj.id === $.jstree.root) { + return this._append_html_data(obj, this._data.core.original_container_html.clone(true), function (status) { + callback.call(this, status); + }); + } + else { + return callback.call(this, false); + } + // return callback.call(this, obj.id === $.jstree.root ? this._append_html_data(obj, this._data.core.original_container_html.clone(true)) : false); + } + if($.isFunction(s)) { + return s.call(this, obj, $.proxy(function (d) { + if(d === false) { + callback.call(this, false); + } + else { + this[typeof d === 'string' ? '_append_html_data' : '_append_json_data'](obj, typeof d === 'string' ? $($.parseHTML(d)).filter(notTextOrCommentNode) : d, function (status) { + callback.call(this, status); + }); + } + // return d === false ? callback.call(this, false) : callback.call(this, this[typeof d === 'string' ? '_append_html_data' : '_append_json_data'](obj, typeof d === 'string' ? $(d) : d)); + }, this)); + } + if(typeof s === 'object') { + if(s.url) { + s = $.extend(true, {}, s); + if($.isFunction(s.url)) { + s.url = s.url.call(this, obj); + } + if($.isFunction(s.data)) { + s.data = s.data.call(this, obj); + } + return $.ajax(s) + .done($.proxy(function (d,t,x) { + var type = x.getResponseHeader('Content-Type'); + if((type && type.indexOf('json') !== -1) || typeof d === "object") { + return this._append_json_data(obj, d, function (status) { callback.call(this, status); }); + //return callback.call(this, this._append_json_data(obj, d)); + } + if((type && type.indexOf('html') !== -1) || typeof d === "string") { + return this._append_html_data(obj, $($.parseHTML(d)).filter(notTextOrCommentNode), function (status) { callback.call(this, status); }); + // return callback.call(this, this._append_html_data(obj, $(d))); + } + this._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'core', 'id' : 'core_04', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id, 'xhr' : x }) }; + this.settings.core.error.call(this, this._data.core.last_error); + return callback.call(this, false); + }, this)) + .fail($.proxy(function (f) { + callback.call(this, false); + this._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'core', 'id' : 'core_04', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id, 'xhr' : f }) }; + this.settings.core.error.call(this, this._data.core.last_error); + }, this)); + } + t = ($.isArray(s) || $.isPlainObject(s)) ? JSON.parse(JSON.stringify(s)) : s; + if(obj.id === $.jstree.root) { + return this._append_json_data(obj, t, function (status) { + callback.call(this, status); + }); + } + else { + this._data.core.last_error = { 'error' : 'nodata', 'plugin' : 'core', 'id' : 'core_05', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id }) }; + this.settings.core.error.call(this, this._data.core.last_error); + return callback.call(this, false); + } + //return callback.call(this, (obj.id === $.jstree.root ? this._append_json_data(obj, t) : false) ); + } + if(typeof s === 'string') { + if(obj.id === $.jstree.root) { + return this._append_html_data(obj, $($.parseHTML(s)).filter(notTextOrCommentNode), function (status) { + callback.call(this, status); + }); + } + else { + this._data.core.last_error = { 'error' : 'nodata', 'plugin' : 'core', 'id' : 'core_06', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id }) }; + this.settings.core.error.call(this, this._data.core.last_error); + return callback.call(this, false); + } + //return callback.call(this, (obj.id === $.jstree.root ? this._append_html_data(obj, $(s)) : false) ); + } + return callback.call(this, false); + }, + /** + * adds a node to the list of nodes to redraw. Used only internally. + * @private + * @name _node_changed(obj [, callback]) + * @param {mixed} obj + */ + _node_changed : function (obj) { + obj = this.get_node(obj); + if(obj) { + this._model.changed.push(obj.id); + } + }, + /** + * appends HTML content to the tree. Used internally. + * @private + * @name _append_html_data(obj, data) + * @param {mixed} obj the node to append to + * @param {String} data the HTML string to parse and append + * @trigger model.jstree, changed.jstree + */ + _append_html_data : function (dom, data, cb) { + dom = this.get_node(dom); + dom.children = []; + dom.children_d = []; + var dat = data.is('ul') ? data.children() : data, + par = dom.id, + chd = [], + dpc = [], + m = this._model.data, + p = m[par], + s = this._data.core.selected.length, + tmp, i, j; + dat.each($.proxy(function (i, v) { + tmp = this._parse_model_from_html($(v), par, p.parents.concat()); + if(tmp) { + chd.push(tmp); + dpc.push(tmp); + if(m[tmp].children_d.length) { + dpc = dpc.concat(m[tmp].children_d); + } + } + }, this)); + p.children = chd; + p.children_d = dpc; + for(i = 0, j = p.parents.length; i < j; i++) { + m[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc); + } + /** + * triggered when new data is inserted to the tree model + * @event + * @name model.jstree + * @param {Array} nodes an array of node IDs + * @param {String} parent the parent ID of the nodes + */ + this.trigger('model', { "nodes" : dpc, 'parent' : par }); + if(par !== $.jstree.root) { + this._node_changed(par); + this.redraw(); + } + else { + this.get_container_ul().children('.jstree-initial-node').remove(); + this.redraw(true); + } + if(this._data.core.selected.length !== s) { + this.trigger('changed', { 'action' : 'model', 'selected' : this._data.core.selected }); + } + cb.call(this, true); + }, + /** + * appends JSON content to the tree. Used internally. + * @private + * @name _append_json_data(obj, data) + * @param {mixed} obj the node to append to + * @param {String} data the JSON object to parse and append + * @param {Boolean} force_processing internal param - do not set + * @trigger model.jstree, changed.jstree + */ + _append_json_data : function (dom, data, cb, force_processing) { + if(this.element === null) { return; } + dom = this.get_node(dom); + dom.children = []; + dom.children_d = []; + // *%$@!!! + if(data.d) { + data = data.d; + if(typeof data === "string") { + data = JSON.parse(data); + } + } + if(!$.isArray(data)) { data = [data]; } + var w = null, + args = { + 'df' : this._model.default_state, + 'dat' : data, + 'par' : dom.id, + 'm' : this._model.data, + 't_id' : this._id, + 't_cnt' : this._cnt, + 'sel' : this._data.core.selected + }, + func = function (data, undefined) { + if(data.data) { data = data.data; } + var dat = data.dat, + par = data.par, + chd = [], + dpc = [], + add = [], + df = data.df, + t_id = data.t_id, + t_cnt = data.t_cnt, + m = data.m, + p = m[par], + sel = data.sel, + tmp, i, j, rslt, + parse_flat = function (d, p, ps) { + if(!ps) { ps = []; } + else { ps = ps.concat(); } + if(p) { ps.unshift(p); } + var tid = d.id.toString(), + i, j, c, e, + tmp = { + id : tid, + text : d.text || '', + icon : d.icon !== undefined ? d.icon : true, + parent : p, + parents : ps, + children : d.children || [], + children_d : d.children_d || [], + data : d.data, + state : { }, + li_attr : { id : false }, + a_attr : { href : '#' }, + original : false + }; + for(i in df) { + if(df.hasOwnProperty(i)) { + tmp.state[i] = df[i]; + } + } + if(d && d.data && d.data.jstree && d.data.jstree.icon) { + tmp.icon = d.data.jstree.icon; + } + if(tmp.icon === undefined || tmp.icon === null || tmp.icon === "") { + tmp.icon = true; + } + if(d && d.data) { + tmp.data = d.data; + if(d.data.jstree) { + for(i in d.data.jstree) { + if(d.data.jstree.hasOwnProperty(i)) { + tmp.state[i] = d.data.jstree[i]; + } + } + } + } + if(d && typeof d.state === 'object') { + for (i in d.state) { + if(d.state.hasOwnProperty(i)) { + tmp.state[i] = d.state[i]; + } + } + } + if(d && typeof d.li_attr === 'object') { + for (i in d.li_attr) { + if(d.li_attr.hasOwnProperty(i)) { + tmp.li_attr[i] = d.li_attr[i]; + } + } + } + if(!tmp.li_attr.id) { + tmp.li_attr.id = tid; + } + if(d && typeof d.a_attr === 'object') { + for (i in d.a_attr) { + if(d.a_attr.hasOwnProperty(i)) { + tmp.a_attr[i] = d.a_attr[i]; + } + } + } + if(d && d.children && d.children === true) { + tmp.state.loaded = false; + tmp.children = []; + tmp.children_d = []; + } + m[tmp.id] = tmp; + for(i = 0, j = tmp.children.length; i < j; i++) { + c = parse_flat(m[tmp.children[i]], tmp.id, ps); + e = m[c]; + tmp.children_d.push(c); + if(e.children_d.length) { + tmp.children_d = tmp.children_d.concat(e.children_d); + } + } + delete d.data; + delete d.children; + m[tmp.id].original = d; + if(tmp.state.selected) { + add.push(tmp.id); + } + return tmp.id; + }, + parse_nest = function (d, p, ps) { + if(!ps) { ps = []; } + else { ps = ps.concat(); } + if(p) { ps.unshift(p); } + var tid = false, i, j, c, e, tmp; + do { + tid = 'j' + t_id + '_' + (++t_cnt); + } while(m[tid]); + + tmp = { + id : false, + text : typeof d === 'string' ? d : '', + icon : typeof d === 'object' && d.icon !== undefined ? d.icon : true, + parent : p, + parents : ps, + children : [], + children_d : [], + data : null, + state : { }, + li_attr : { id : false }, + a_attr : { href : '#' }, + original : false + }; + for(i in df) { + if(df.hasOwnProperty(i)) { + tmp.state[i] = df[i]; + } + } + if(d && d.id) { tmp.id = d.id.toString(); } + if(d && d.text) { tmp.text = d.text; } + if(d && d.data && d.data.jstree && d.data.jstree.icon) { + tmp.icon = d.data.jstree.icon; + } + if(tmp.icon === undefined || tmp.icon === null || tmp.icon === "") { + tmp.icon = true; + } + if(d && d.data) { + tmp.data = d.data; + if(d.data.jstree) { + for(i in d.data.jstree) { + if(d.data.jstree.hasOwnProperty(i)) { + tmp.state[i] = d.data.jstree[i]; + } + } + } + } + if(d && typeof d.state === 'object') { + for (i in d.state) { + if(d.state.hasOwnProperty(i)) { + tmp.state[i] = d.state[i]; + } + } + } + if(d && typeof d.li_attr === 'object') { + for (i in d.li_attr) { + if(d.li_attr.hasOwnProperty(i)) { + tmp.li_attr[i] = d.li_attr[i]; + } + } + } + if(tmp.li_attr.id && !tmp.id) { + tmp.id = tmp.li_attr.id.toString(); + } + if(!tmp.id) { + tmp.id = tid; + } + if(!tmp.li_attr.id) { + tmp.li_attr.id = tmp.id; + } + if(d && typeof d.a_attr === 'object') { + for (i in d.a_attr) { + if(d.a_attr.hasOwnProperty(i)) { + tmp.a_attr[i] = d.a_attr[i]; + } + } + } + if(d && d.children && d.children.length) { + for(i = 0, j = d.children.length; i < j; i++) { + c = parse_nest(d.children[i], tmp.id, ps); + e = m[c]; + tmp.children.push(c); + if(e.children_d.length) { + tmp.children_d = tmp.children_d.concat(e.children_d); + } + } + tmp.children_d = tmp.children_d.concat(tmp.children); + } + if(d && d.children && d.children === true) { + tmp.state.loaded = false; + tmp.children = []; + tmp.children_d = []; + } + delete d.data; + delete d.children; + tmp.original = d; + m[tmp.id] = tmp; + if(tmp.state.selected) { + add.push(tmp.id); + } + return tmp.id; + }; + + if(dat.length && dat[0].id !== undefined && dat[0].parent !== undefined) { + // Flat JSON support (for easy import from DB): + // 1) convert to object (foreach) + for(i = 0, j = dat.length; i < j; i++) { + if(!dat[i].children) { + dat[i].children = []; + } + m[dat[i].id.toString()] = dat[i]; + } + // 2) populate children (foreach) + for(i = 0, j = dat.length; i < j; i++) { + m[dat[i].parent.toString()].children.push(dat[i].id.toString()); + // populate parent.children_d + p.children_d.push(dat[i].id.toString()); + } + // 3) normalize && populate parents and children_d with recursion + for(i = 0, j = p.children.length; i < j; i++) { + tmp = parse_flat(m[p.children[i]], par, p.parents.concat()); + dpc.push(tmp); + if(m[tmp].children_d.length) { + dpc = dpc.concat(m[tmp].children_d); + } + } + for(i = 0, j = p.parents.length; i < j; i++) { + m[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc); + } + // ?) three_state selection - p.state.selected && t - (if three_state foreach(dat => ch) -> foreach(parents) if(parent.selected) child.selected = true; + rslt = { + 'cnt' : t_cnt, + 'mod' : m, + 'sel' : sel, + 'par' : par, + 'dpc' : dpc, + 'add' : add + }; + } + else { + for(i = 0, j = dat.length; i < j; i++) { + tmp = parse_nest(dat[i], par, p.parents.concat()); + if(tmp) { + chd.push(tmp); + dpc.push(tmp); + if(m[tmp].children_d.length) { + dpc = dpc.concat(m[tmp].children_d); + } + } + } + p.children = chd; + p.children_d = dpc; + for(i = 0, j = p.parents.length; i < j; i++) { + m[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc); + } + rslt = { + 'cnt' : t_cnt, + 'mod' : m, + 'sel' : sel, + 'par' : par, + 'dpc' : dpc, + 'add' : add + }; + } + if(typeof window === 'undefined' || typeof window.document === 'undefined') { + postMessage(rslt); + } + else { + return rslt; + } + }, + rslt = function (rslt, worker) { + if(this.element === null) { return; } + this._cnt = rslt.cnt; + var i, m = this._model.data; + for (i in m) { + if (m.hasOwnProperty(i) && m[i].state && m[i].state.loading && rslt.mod[i]) { + rslt.mod[i].state.loading = true; + } + } + this._model.data = rslt.mod; // breaks the reference in load_node - careful + + if(worker) { + var j, a = rslt.add, r = rslt.sel, s = this._data.core.selected.slice(); + m = this._model.data; + // if selection was changed while calculating in worker + if(r.length !== s.length || $.vakata.array_unique(r.concat(s)).length !== r.length) { + // deselect nodes that are no longer selected + for(i = 0, j = r.length; i < j; i++) { + if($.inArray(r[i], a) === -1 && $.inArray(r[i], s) === -1) { + m[r[i]].state.selected = false; + } + } + // select nodes that were selected in the mean time + for(i = 0, j = s.length; i < j; i++) { + if($.inArray(s[i], r) === -1) { + m[s[i]].state.selected = true; + } + } + } + } + if(rslt.add.length) { + this._data.core.selected = this._data.core.selected.concat(rslt.add); + } + + this.trigger('model', { "nodes" : rslt.dpc, 'parent' : rslt.par }); + + if(rslt.par !== $.jstree.root) { + this._node_changed(rslt.par); + this.redraw(); + } + else { + // this.get_container_ul().children('.jstree-initial-node').remove(); + this.redraw(true); + } + if(rslt.add.length) { + this.trigger('changed', { 'action' : 'model', 'selected' : this._data.core.selected }); + } + cb.call(this, true); + }; + if(this.settings.core.worker && window.Blob && window.URL && window.Worker) { + try { + if(this._wrk === null) { + this._wrk = window.URL.createObjectURL( + new window.Blob( + ['self.onmessage = ' + func.toString()], + {type:"text/javascript"} + ) + ); + } + if(!this._data.core.working || force_processing) { + this._data.core.working = true; + w = new window.Worker(this._wrk); + w.onmessage = $.proxy(function (e) { + rslt.call(this, e.data, true); + try { w.terminate(); w = null; } catch(ignore) { } + if(this._data.core.worker_queue.length) { + this._append_json_data.apply(this, this._data.core.worker_queue.shift()); + } + else { + this._data.core.working = false; + } + }, this); + if(!args.par) { + if(this._data.core.worker_queue.length) { + this._append_json_data.apply(this, this._data.core.worker_queue.shift()); + } + else { + this._data.core.working = false; + } + } + else { + w.postMessage(args); + } + } + else { + this._data.core.worker_queue.push([dom, data, cb, true]); + } + } + catch(e) { + rslt.call(this, func(args), false); + if(this._data.core.worker_queue.length) { + this._append_json_data.apply(this, this._data.core.worker_queue.shift()); + } + else { + this._data.core.working = false; + } + } + } + else { + rslt.call(this, func(args), false); + } + }, + /** + * parses a node from a jQuery object and appends them to the in memory tree model. Used internally. + * @private + * @name _parse_model_from_html(d [, p, ps]) + * @param {jQuery} d the jQuery object to parse + * @param {String} p the parent ID + * @param {Array} ps list of all parents + * @return {String} the ID of the object added to the model + */ + _parse_model_from_html : function (d, p, ps) { + if(!ps) { ps = []; } + else { ps = [].concat(ps); } + if(p) { ps.unshift(p); } + var c, e, m = this._model.data, + data = { + id : false, + text : false, + icon : true, + parent : p, + parents : ps, + children : [], + children_d : [], + data : null, + state : { }, + li_attr : { id : false }, + a_attr : { href : '#' }, + original : false + }, i, tmp, tid; + for(i in this._model.default_state) { + if(this._model.default_state.hasOwnProperty(i)) { + data.state[i] = this._model.default_state[i]; + } + } + tmp = $.vakata.attributes(d, true); + $.each(tmp, function (i, v) { + v = $.trim(v); + if(!v.length) { return true; } + data.li_attr[i] = v; + if(i === 'id') { + data.id = v.toString(); + } + }); + tmp = d.children('a').first(); + if(tmp.length) { + tmp = $.vakata.attributes(tmp, true); + $.each(tmp, function (i, v) { + v = $.trim(v); + if(v.length) { + data.a_attr[i] = v; + } + }); + } + tmp = d.children("a").first().length ? d.children("a").first().clone() : d.clone(); + tmp.children("ins, i, ul").remove(); + tmp = tmp.html(); + tmp = $('
          ').html(tmp); + data.text = this.settings.core.force_text ? tmp.text() : tmp.html(); + tmp = d.data(); + data.data = tmp ? $.extend(true, {}, tmp) : null; + data.state.opened = d.hasClass('jstree-open'); + data.state.selected = d.children('a').hasClass('jstree-clicked'); + data.state.disabled = d.children('a').hasClass('jstree-disabled'); + if(data.data && data.data.jstree) { + for(i in data.data.jstree) { + if(data.data.jstree.hasOwnProperty(i)) { + data.state[i] = data.data.jstree[i]; + } + } + } + tmp = d.children("a").children(".jstree-themeicon"); + if(tmp.length) { + data.icon = tmp.hasClass('jstree-themeicon-hidden') ? false : tmp.attr('rel'); + } + if(data.state.icon !== undefined) { + data.icon = data.state.icon; + } + if(data.icon === undefined || data.icon === null || data.icon === "") { + data.icon = true; + } + tmp = d.children("ul").children("li"); + do { + tid = 'j' + this._id + '_' + (++this._cnt); + } while(m[tid]); + data.id = data.li_attr.id ? data.li_attr.id.toString() : tid; + if(tmp.length) { + tmp.each($.proxy(function (i, v) { + c = this._parse_model_from_html($(v), data.id, ps); + e = this._model.data[c]; + data.children.push(c); + if(e.children_d.length) { + data.children_d = data.children_d.concat(e.children_d); + } + }, this)); + data.children_d = data.children_d.concat(data.children); + } + else { + if(d.hasClass('jstree-closed')) { + data.state.loaded = false; + } + } + if(data.li_attr['class']) { + data.li_attr['class'] = data.li_attr['class'].replace('jstree-closed','').replace('jstree-open',''); + } + if(data.a_attr['class']) { + data.a_attr['class'] = data.a_attr['class'].replace('jstree-clicked','').replace('jstree-disabled',''); + } + m[data.id] = data; + if(data.state.selected) { + this._data.core.selected.push(data.id); + } + return data.id; + }, + /** + * parses a node from a JSON object (used when dealing with flat data, which has no nesting of children, but has id and parent properties) and appends it to the in memory tree model. Used internally. + * @private + * @name _parse_model_from_flat_json(d [, p, ps]) + * @param {Object} d the JSON object to parse + * @param {String} p the parent ID + * @param {Array} ps list of all parents + * @return {String} the ID of the object added to the model + */ + _parse_model_from_flat_json : function (d, p, ps) { + if(!ps) { ps = []; } + else { ps = ps.concat(); } + if(p) { ps.unshift(p); } + var tid = d.id.toString(), + m = this._model.data, + df = this._model.default_state, + i, j, c, e, + tmp = { + id : tid, + text : d.text || '', + icon : d.icon !== undefined ? d.icon : true, + parent : p, + parents : ps, + children : d.children || [], + children_d : d.children_d || [], + data : d.data, + state : { }, + li_attr : { id : false }, + a_attr : { href : '#' }, + original : false + }; + for(i in df) { + if(df.hasOwnProperty(i)) { + tmp.state[i] = df[i]; + } + } + if(d && d.data && d.data.jstree && d.data.jstree.icon) { + tmp.icon = d.data.jstree.icon; + } + if(tmp.icon === undefined || tmp.icon === null || tmp.icon === "") { + tmp.icon = true; + } + if(d && d.data) { + tmp.data = d.data; + if(d.data.jstree) { + for(i in d.data.jstree) { + if(d.data.jstree.hasOwnProperty(i)) { + tmp.state[i] = d.data.jstree[i]; + } + } + } + } + if(d && typeof d.state === 'object') { + for (i in d.state) { + if(d.state.hasOwnProperty(i)) { + tmp.state[i] = d.state[i]; + } + } + } + if(d && typeof d.li_attr === 'object') { + for (i in d.li_attr) { + if(d.li_attr.hasOwnProperty(i)) { + tmp.li_attr[i] = d.li_attr[i]; + } + } + } + if(!tmp.li_attr.id) { + tmp.li_attr.id = tid; + } + if(d && typeof d.a_attr === 'object') { + for (i in d.a_attr) { + if(d.a_attr.hasOwnProperty(i)) { + tmp.a_attr[i] = d.a_attr[i]; + } + } + } + if(d && d.children && d.children === true) { + tmp.state.loaded = false; + tmp.children = []; + tmp.children_d = []; + } + m[tmp.id] = tmp; + for(i = 0, j = tmp.children.length; i < j; i++) { + c = this._parse_model_from_flat_json(m[tmp.children[i]], tmp.id, ps); + e = m[c]; + tmp.children_d.push(c); + if(e.children_d.length) { + tmp.children_d = tmp.children_d.concat(e.children_d); + } + } + delete d.data; + delete d.children; + m[tmp.id].original = d; + if(tmp.state.selected) { + this._data.core.selected.push(tmp.id); + } + return tmp.id; + }, + /** + * parses a node from a JSON object and appends it to the in memory tree model. Used internally. + * @private + * @name _parse_model_from_json(d [, p, ps]) + * @param {Object} d the JSON object to parse + * @param {String} p the parent ID + * @param {Array} ps list of all parents + * @return {String} the ID of the object added to the model + */ + _parse_model_from_json : function (d, p, ps) { + if(!ps) { ps = []; } + else { ps = ps.concat(); } + if(p) { ps.unshift(p); } + var tid = false, i, j, c, e, m = this._model.data, df = this._model.default_state, tmp; + do { + tid = 'j' + this._id + '_' + (++this._cnt); + } while(m[tid]); + + tmp = { + id : false, + text : typeof d === 'string' ? d : '', + icon : typeof d === 'object' && d.icon !== undefined ? d.icon : true, + parent : p, + parents : ps, + children : [], + children_d : [], + data : null, + state : { }, + li_attr : { id : false }, + a_attr : { href : '#' }, + original : false + }; + for(i in df) { + if(df.hasOwnProperty(i)) { + tmp.state[i] = df[i]; + } + } + if(d && d.id) { tmp.id = d.id.toString(); } + if(d && d.text) { tmp.text = d.text; } + if(d && d.data && d.data.jstree && d.data.jstree.icon) { + tmp.icon = d.data.jstree.icon; + } + if(tmp.icon === undefined || tmp.icon === null || tmp.icon === "") { + tmp.icon = true; + } + if(d && d.data) { + tmp.data = d.data; + if(d.data.jstree) { + for(i in d.data.jstree) { + if(d.data.jstree.hasOwnProperty(i)) { + tmp.state[i] = d.data.jstree[i]; + } + } + } + } + if(d && typeof d.state === 'object') { + for (i in d.state) { + if(d.state.hasOwnProperty(i)) { + tmp.state[i] = d.state[i]; + } + } + } + if(d && typeof d.li_attr === 'object') { + for (i in d.li_attr) { + if(d.li_attr.hasOwnProperty(i)) { + tmp.li_attr[i] = d.li_attr[i]; + } + } + } + if(tmp.li_attr.id && !tmp.id) { + tmp.id = tmp.li_attr.id.toString(); + } + if(!tmp.id) { + tmp.id = tid; + } + if(!tmp.li_attr.id) { + tmp.li_attr.id = tmp.id; + } + if(d && typeof d.a_attr === 'object') { + for (i in d.a_attr) { + if(d.a_attr.hasOwnProperty(i)) { + tmp.a_attr[i] = d.a_attr[i]; + } + } + } + if(d && d.children && d.children.length) { + for(i = 0, j = d.children.length; i < j; i++) { + c = this._parse_model_from_json(d.children[i], tmp.id, ps); + e = m[c]; + tmp.children.push(c); + if(e.children_d.length) { + tmp.children_d = tmp.children_d.concat(e.children_d); + } + } + tmp.children_d = tmp.children_d.concat(tmp.children); + } + if(d && d.children && d.children === true) { + tmp.state.loaded = false; + tmp.children = []; + tmp.children_d = []; + } + delete d.data; + delete d.children; + tmp.original = d; + m[tmp.id] = tmp; + if(tmp.state.selected) { + this._data.core.selected.push(tmp.id); + } + return tmp.id; + }, + /** + * redraws all nodes that need to be redrawn. Used internally. + * @private + * @name _redraw() + * @trigger redraw.jstree + */ + _redraw : function () { + var nodes = this._model.force_full_redraw ? this._model.data[$.jstree.root].children.concat([]) : this._model.changed.concat([]), + f = document.createElement('UL'), tmp, i, j, fe = this._data.core.focused; + for(i = 0, j = nodes.length; i < j; i++) { + tmp = this.redraw_node(nodes[i], true, this._model.force_full_redraw); + if(tmp && this._model.force_full_redraw) { + f.appendChild(tmp); + } + } + if(this._model.force_full_redraw) { + f.className = this.get_container_ul()[0].className; + f.setAttribute('role','group'); + this.element.empty().append(f); + //this.get_container_ul()[0].appendChild(f); + } + if(fe !== null) { + tmp = this.get_node(fe, true); + if(tmp && tmp.length && tmp.children('.jstree-anchor')[0] !== document.activeElement) { + tmp.children('.jstree-anchor').focus(); + } + else { + this._data.core.focused = null; + } + } + this._model.force_full_redraw = false; + this._model.changed = []; + /** + * triggered after nodes are redrawn + * @event + * @name redraw.jstree + * @param {array} nodes the redrawn nodes + */ + this.trigger('redraw', { "nodes" : nodes }); + }, + /** + * redraws all nodes that need to be redrawn or optionally - the whole tree + * @name redraw([full]) + * @param {Boolean} full if set to `true` all nodes are redrawn. + */ + redraw : function (full) { + if(full) { + this._model.force_full_redraw = true; + } + //if(this._model.redraw_timeout) { + // clearTimeout(this._model.redraw_timeout); + //} + //this._model.redraw_timeout = setTimeout($.proxy(this._redraw, this),0); + this._redraw(); + }, + /** + * redraws a single node's children. Used internally. + * @private + * @name draw_children(node) + * @param {mixed} node the node whose children will be redrawn + */ + draw_children : function (node) { + var obj = this.get_node(node), + i = false, + j = false, + k = false, + d = document; + if(!obj) { return false; } + if(obj.id === $.jstree.root) { return this.redraw(true); } + node = this.get_node(node, true); + if(!node || !node.length) { return false; } // TODO: quick toggle + + node.children('.jstree-children').remove(); + node = node[0]; + if(obj.children.length && obj.state.loaded) { + k = d.createElement('UL'); + k.setAttribute('role', 'group'); + k.className = 'jstree-children'; + for(i = 0, j = obj.children.length; i < j; i++) { + k.appendChild(this.redraw_node(obj.children[i], true, true)); + } + node.appendChild(k); + } + }, + /** + * redraws a single node. Used internally. + * @private + * @name redraw_node(node, deep, is_callback, force_render) + * @param {mixed} node the node to redraw + * @param {Boolean} deep should child nodes be redrawn too + * @param {Boolean} is_callback is this a recursion call + * @param {Boolean} force_render should children of closed parents be drawn anyway + */ + redraw_node : function (node, deep, is_callback, force_render) { + var obj = this.get_node(node), + par = false, + ind = false, + old = false, + i = false, + j = false, + k = false, + c = '', + d = document, + m = this._model.data, + f = false, + s = false, + tmp = null, + t = 0, + l = 0, + has_children = false, + last_sibling = false; + if(!obj) { return false; } + if(obj.id === $.jstree.root) { return this.redraw(true); } + deep = deep || obj.children.length === 0; + node = !document.querySelector ? document.getElementById(obj.id) : this.element[0].querySelector('#' + ("0123456789".indexOf(obj.id[0]) !== -1 ? '\\3' + obj.id[0] + ' ' + obj.id.substr(1).replace($.jstree.idregex,'\\$&') : obj.id.replace($.jstree.idregex,'\\$&')) ); //, this.element); + if(!node) { + deep = true; + //node = d.createElement('LI'); + if(!is_callback) { + par = obj.parent !== $.jstree.root ? $('#' + obj.parent.replace($.jstree.idregex,'\\$&'), this.element)[0] : null; + if(par !== null && (!par || !m[obj.parent].state.opened)) { + return false; + } + ind = $.inArray(obj.id, par === null ? m[$.jstree.root].children : m[obj.parent].children); + } + } + else { + node = $(node); + if(!is_callback) { + par = node.parent().parent()[0]; + if(par === this.element[0]) { + par = null; + } + ind = node.index(); + } + // m[obj.id].data = node.data(); // use only node's data, no need to touch jquery storage + if(!deep && obj.children.length && !node.children('.jstree-children').length) { + deep = true; + } + if(!deep) { + old = node.children('.jstree-children')[0]; + } + f = node.children('.jstree-anchor')[0] === document.activeElement; + node.remove(); + //node = d.createElement('LI'); + //node = node[0]; + } + node = this._data.core.node.cloneNode(true); + // node is DOM, deep is boolean + + c = 'jstree-node '; + for(i in obj.li_attr) { + if(obj.li_attr.hasOwnProperty(i)) { + if(i === 'id') { continue; } + if(i !== 'class') { + node.setAttribute(i, obj.li_attr[i]); + } + else { + c += obj.li_attr[i]; + } + } + } + if(!obj.a_attr.id) { + obj.a_attr.id = obj.id + '_anchor'; + } + node.setAttribute('aria-selected', !!obj.state.selected); + node.setAttribute('aria-level', obj.parents.length); + node.setAttribute('aria-labelledby', obj.a_attr.id); + if(obj.state.disabled) { + node.setAttribute('aria-disabled', true); + } + + for(i = 0, j = obj.children.length; i < j; i++) { + if(!m[obj.children[i]].state.hidden) { + has_children = true; + break; + } + } + if(obj.parent !== null && m[obj.parent] && !obj.state.hidden) { + i = $.inArray(obj.id, m[obj.parent].children); + last_sibling = obj.id; + if(i !== -1) { + i++; + for(j = m[obj.parent].children.length; i < j; i++) { + if(!m[m[obj.parent].children[i]].state.hidden) { + last_sibling = m[obj.parent].children[i]; + } + if(last_sibling !== obj.id) { + break; + } + } + } + } + + if(obj.state.hidden) { + c += ' jstree-hidden'; + } + if(obj.state.loaded && !has_children) { + c += ' jstree-leaf'; + } + else { + c += obj.state.opened && obj.state.loaded ? ' jstree-open' : ' jstree-closed'; + node.setAttribute('aria-expanded', (obj.state.opened && obj.state.loaded) ); + } + if(last_sibling === obj.id) { + c += ' jstree-last'; + } + node.id = obj.id; + node.className = c; + c = ( obj.state.selected ? ' jstree-clicked' : '') + ( obj.state.disabled ? ' jstree-disabled' : ''); + for(j in obj.a_attr) { + if(obj.a_attr.hasOwnProperty(j)) { + if(j === 'href' && obj.a_attr[j] === '#') { continue; } + if(j !== 'class') { + node.childNodes[1].setAttribute(j, obj.a_attr[j]); + } + else { + c += ' ' + obj.a_attr[j]; + } + } + } + if(c.length) { + node.childNodes[1].className = 'jstree-anchor ' + c; + } + if((obj.icon && obj.icon !== true) || obj.icon === false) { + if(obj.icon === false) { + node.childNodes[1].childNodes[0].className += ' jstree-themeicon-hidden'; + } + else if(obj.icon.indexOf('/') === -1 && obj.icon.indexOf('.') === -1) { + node.childNodes[1].childNodes[0].className += ' ' + obj.icon + ' jstree-themeicon-custom'; + } + else { + node.childNodes[1].childNodes[0].style.backgroundImage = 'url("'+obj.icon+'")'; + node.childNodes[1].childNodes[0].style.backgroundPosition = 'center center'; + node.childNodes[1].childNodes[0].style.backgroundSize = 'auto'; + node.childNodes[1].childNodes[0].className += ' jstree-themeicon-custom'; + } + } + + if(this.settings.core.force_text) { + node.childNodes[1].appendChild(d.createTextNode(obj.text)); + } + else { + node.childNodes[1].innerHTML += obj.text; + } + + + if(deep && obj.children.length && (obj.state.opened || force_render) && obj.state.loaded) { + k = d.createElement('UL'); + k.setAttribute('role', 'group'); + k.className = 'jstree-children'; + for(i = 0, j = obj.children.length; i < j; i++) { + k.appendChild(this.redraw_node(obj.children[i], deep, true)); + } + node.appendChild(k); + } + if(old) { + node.appendChild(old); + } + if(!is_callback) { + // append back using par / ind + if(!par) { + par = this.element[0]; + } + for(i = 0, j = par.childNodes.length; i < j; i++) { + if(par.childNodes[i] && par.childNodes[i].className && par.childNodes[i].className.indexOf('jstree-children') !== -1) { + tmp = par.childNodes[i]; + break; + } + } + if(!tmp) { + tmp = d.createElement('UL'); + tmp.setAttribute('role', 'group'); + tmp.className = 'jstree-children'; + par.appendChild(tmp); + } + par = tmp; + + if(ind < par.childNodes.length) { + par.insertBefore(node, par.childNodes[ind]); + } + else { + par.appendChild(node); + } + if(f) { + t = this.element[0].scrollTop; + l = this.element[0].scrollLeft; + node.childNodes[1].focus(); + this.element[0].scrollTop = t; + this.element[0].scrollLeft = l; + } + } + if(obj.state.opened && !obj.state.loaded) { + obj.state.opened = false; + setTimeout($.proxy(function () { + this.open_node(obj.id, false, 0); + }, this), 0); + } + return node; + }, + /** + * opens a node, revaling its children. If the node is not loaded it will be loaded and opened once ready. + * @name open_node(obj [, callback, animation]) + * @param {mixed} obj the node to open + * @param {Function} callback a function to execute once the node is opened + * @param {Number} animation the animation duration in milliseconds when opening the node (overrides the `core.animation` setting). Use `false` for no animation. + * @trigger open_node.jstree, after_open.jstree, before_open.jstree + */ + open_node : function (obj, callback, animation) { + var t1, t2, d, t; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.open_node(obj[t1], callback, animation); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + animation = animation === undefined ? this.settings.core.animation : animation; + if(!this.is_closed(obj)) { + if(callback) { + callback.call(this, obj, false); + } + return false; + } + if(!this.is_loaded(obj)) { + if(this.is_loading(obj)) { + return setTimeout($.proxy(function () { + this.open_node(obj, callback, animation); + }, this), 500); + } + this.load_node(obj, function (o, ok) { + return ok ? this.open_node(o, callback, animation) : (callback ? callback.call(this, o, false) : false); + }); + } + else { + d = this.get_node(obj, true); + t = this; + if(d.length) { + if(animation && d.children(".jstree-children").length) { + d.children(".jstree-children").stop(true, true); + } + if(obj.children.length && !this._firstChild(d.children('.jstree-children')[0])) { + this.draw_children(obj); + //d = this.get_node(obj, true); + } + if(!animation) { + this.trigger('before_open', { "node" : obj }); + d[0].className = d[0].className.replace('jstree-closed', 'jstree-open'); + d[0].setAttribute("aria-expanded", true); + } + else { + this.trigger('before_open', { "node" : obj }); + d + .children(".jstree-children").css("display","none").end() + .removeClass("jstree-closed").addClass("jstree-open").attr("aria-expanded", true) + .children(".jstree-children").stop(true, true) + .slideDown(animation, function () { + this.style.display = ""; + if (t.element) { + t.trigger("after_open", { "node" : obj }); + } + }); + } + } + obj.state.opened = true; + if(callback) { + callback.call(this, obj, true); + } + if(!d.length) { + /** + * triggered when a node is about to be opened (if the node is supposed to be in the DOM, it will be, but it won't be visible yet) + * @event + * @name before_open.jstree + * @param {Object} node the opened node + */ + this.trigger('before_open', { "node" : obj }); + } + /** + * triggered when a node is opened (if there is an animation it will not be completed yet) + * @event + * @name open_node.jstree + * @param {Object} node the opened node + */ + this.trigger('open_node', { "node" : obj }); + if(!animation || !d.length) { + /** + * triggered when a node is opened and the animation is complete + * @event + * @name after_open.jstree + * @param {Object} node the opened node + */ + this.trigger("after_open", { "node" : obj }); + } + return true; + } + }, + /** + * opens every parent of a node (node should be loaded) + * @name _open_to(obj) + * @param {mixed} obj the node to reveal + * @private + */ + _open_to : function (obj) { + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + var i, j, p = obj.parents; + for(i = 0, j = p.length; i < j; i+=1) { + if(i !== $.jstree.root) { + this.open_node(p[i], false, 0); + } + } + return $('#' + obj.id.replace($.jstree.idregex,'\\$&'), this.element); + }, + /** + * closes a node, hiding its children + * @name close_node(obj [, animation]) + * @param {mixed} obj the node to close + * @param {Number} animation the animation duration in milliseconds when closing the node (overrides the `core.animation` setting). Use `false` for no animation. + * @trigger close_node.jstree, after_close.jstree + */ + close_node : function (obj, animation) { + var t1, t2, t, d; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.close_node(obj[t1], animation); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + if(this.is_closed(obj)) { + return false; + } + animation = animation === undefined ? this.settings.core.animation : animation; + t = this; + d = this.get_node(obj, true); + + obj.state.opened = false; + /** + * triggered when a node is closed (if there is an animation it will not be complete yet) + * @event + * @name close_node.jstree + * @param {Object} node the closed node + */ + this.trigger('close_node',{ "node" : obj }); + if(!d.length) { + /** + * triggered when a node is closed and the animation is complete + * @event + * @name after_close.jstree + * @param {Object} node the closed node + */ + this.trigger("after_close", { "node" : obj }); + } + else { + if(!animation) { + d[0].className = d[0].className.replace('jstree-open', 'jstree-closed'); + d.attr("aria-expanded", false).children('.jstree-children').remove(); + this.trigger("after_close", { "node" : obj }); + } + else { + d + .children(".jstree-children").attr("style","display:block !important").end() + .removeClass("jstree-open").addClass("jstree-closed").attr("aria-expanded", false) + .children(".jstree-children").stop(true, true).slideUp(animation, function () { + this.style.display = ""; + d.children('.jstree-children').remove(); + if (t.element) { + t.trigger("after_close", { "node" : obj }); + } + }); + } + } + }, + /** + * toggles a node - closing it if it is open, opening it if it is closed + * @name toggle_node(obj) + * @param {mixed} obj the node to toggle + */ + toggle_node : function (obj) { + var t1, t2; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.toggle_node(obj[t1]); + } + return true; + } + if(this.is_closed(obj)) { + return this.open_node(obj); + } + if(this.is_open(obj)) { + return this.close_node(obj); + } + }, + /** + * opens all nodes within a node (or the tree), revaling their children. If the node is not loaded it will be loaded and opened once ready. + * @name open_all([obj, animation, original_obj]) + * @param {mixed} obj the node to open recursively, omit to open all nodes in the tree + * @param {Number} animation the animation duration in milliseconds when opening the nodes, the default is no animation + * @param {jQuery} reference to the node that started the process (internal use) + * @trigger open_all.jstree + */ + open_all : function (obj, animation, original_obj) { + if(!obj) { obj = $.jstree.root; } + obj = this.get_node(obj); + if(!obj) { return false; } + var dom = obj.id === $.jstree.root ? this.get_container_ul() : this.get_node(obj, true), i, j, _this; + if(!dom.length) { + for(i = 0, j = obj.children_d.length; i < j; i++) { + if(this.is_closed(this._model.data[obj.children_d[i]])) { + this._model.data[obj.children_d[i]].state.opened = true; + } + } + return this.trigger('open_all', { "node" : obj }); + } + original_obj = original_obj || dom; + _this = this; + dom = this.is_closed(obj) ? dom.find('.jstree-closed').addBack() : dom.find('.jstree-closed'); + dom.each(function () { + _this.open_node( + this, + function(node, status) { if(status && this.is_parent(node)) { this.open_all(node, animation, original_obj); } }, + animation || 0 + ); + }); + if(original_obj.find('.jstree-closed').length === 0) { + /** + * triggered when an `open_all` call completes + * @event + * @name open_all.jstree + * @param {Object} node the opened node + */ + this.trigger('open_all', { "node" : this.get_node(original_obj) }); + } + }, + /** + * closes all nodes within a node (or the tree), revaling their children + * @name close_all([obj, animation]) + * @param {mixed} obj the node to close recursively, omit to close all nodes in the tree + * @param {Number} animation the animation duration in milliseconds when closing the nodes, the default is no animation + * @trigger close_all.jstree + */ + close_all : function (obj, animation) { + if(!obj) { obj = $.jstree.root; } + obj = this.get_node(obj); + if(!obj) { return false; } + var dom = obj.id === $.jstree.root ? this.get_container_ul() : this.get_node(obj, true), + _this = this, i, j; + if(dom.length) { + dom = this.is_open(obj) ? dom.find('.jstree-open').addBack() : dom.find('.jstree-open'); + $(dom.get().reverse()).each(function () { _this.close_node(this, animation || 0); }); + } + for(i = 0, j = obj.children_d.length; i < j; i++) { + this._model.data[obj.children_d[i]].state.opened = false; + } + /** + * triggered when an `close_all` call completes + * @event + * @name close_all.jstree + * @param {Object} node the closed node + */ + this.trigger('close_all', { "node" : obj }); + }, + /** + * checks if a node is disabled (not selectable) + * @name is_disabled(obj) + * @param {mixed} obj + * @return {Boolean} + */ + is_disabled : function (obj) { + obj = this.get_node(obj); + return obj && obj.state && obj.state.disabled; + }, + /** + * enables a node - so that it can be selected + * @name enable_node(obj) + * @param {mixed} obj the node to enable + * @trigger enable_node.jstree + */ + enable_node : function (obj) { + var t1, t2; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.enable_node(obj[t1]); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + obj.state.disabled = false; + this.get_node(obj,true).children('.jstree-anchor').removeClass('jstree-disabled').attr('aria-disabled', false); + /** + * triggered when an node is enabled + * @event + * @name enable_node.jstree + * @param {Object} node the enabled node + */ + this.trigger('enable_node', { 'node' : obj }); + }, + /** + * disables a node - so that it can not be selected + * @name disable_node(obj) + * @param {mixed} obj the node to disable + * @trigger disable_node.jstree + */ + disable_node : function (obj) { + var t1, t2; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.disable_node(obj[t1]); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + obj.state.disabled = true; + this.get_node(obj,true).children('.jstree-anchor').addClass('jstree-disabled').attr('aria-disabled', true); + /** + * triggered when an node is disabled + * @event + * @name disable_node.jstree + * @param {Object} node the disabled node + */ + this.trigger('disable_node', { 'node' : obj }); + }, + /** + * determines if a node is hidden + * @name is_hidden(obj) + * @param {mixed} obj the node + */ + is_hidden : function (obj) { + obj = this.get_node(obj); + return obj.state.hidden === true; + }, + /** + * hides a node - it is still in the structure but will not be visible + * @name hide_node(obj) + * @param {mixed} obj the node to hide + * @param {Boolean} skip_redraw internal parameter controlling if redraw is called + * @trigger hide_node.jstree + */ + hide_node : function (obj, skip_redraw) { + var t1, t2; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.hide_node(obj[t1], true); + } + if (!skip_redraw) { + this.redraw(); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + if(!obj.state.hidden) { + obj.state.hidden = true; + this._node_changed(obj.parent); + if(!skip_redraw) { + this.redraw(); + } + /** + * triggered when an node is hidden + * @event + * @name hide_node.jstree + * @param {Object} node the hidden node + */ + this.trigger('hide_node', { 'node' : obj }); + } + }, + /** + * shows a node + * @name show_node(obj) + * @param {mixed} obj the node to show + * @param {Boolean} skip_redraw internal parameter controlling if redraw is called + * @trigger show_node.jstree + */ + show_node : function (obj, skip_redraw) { + var t1, t2; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.show_node(obj[t1], true); + } + if (!skip_redraw) { + this.redraw(); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + if(obj.state.hidden) { + obj.state.hidden = false; + this._node_changed(obj.parent); + if(!skip_redraw) { + this.redraw(); + } + /** + * triggered when an node is shown + * @event + * @name show_node.jstree + * @param {Object} node the shown node + */ + this.trigger('show_node', { 'node' : obj }); + } + }, + /** + * hides all nodes + * @name hide_all() + * @trigger hide_all.jstree + */ + hide_all : function (skip_redraw) { + var i, m = this._model.data, ids = []; + for(i in m) { + if(m.hasOwnProperty(i) && i !== $.jstree.root && !m[i].state.hidden) { + m[i].state.hidden = true; + ids.push(i); + } + } + this._model.force_full_redraw = true; + if(!skip_redraw) { + this.redraw(); + } + /** + * triggered when all nodes are hidden + * @event + * @name hide_all.jstree + * @param {Array} nodes the IDs of all hidden nodes + */ + this.trigger('hide_all', { 'nodes' : ids }); + return ids; + }, + /** + * shows all nodes + * @name show_all() + * @trigger show_all.jstree + */ + show_all : function (skip_redraw) { + var i, m = this._model.data, ids = []; + for(i in m) { + if(m.hasOwnProperty(i) && i !== $.jstree.root && m[i].state.hidden) { + m[i].state.hidden = false; + ids.push(i); + } + } + this._model.force_full_redraw = true; + if(!skip_redraw) { + this.redraw(); + } + /** + * triggered when all nodes are shown + * @event + * @name show_all.jstree + * @param {Array} nodes the IDs of all shown nodes + */ + this.trigger('show_all', { 'nodes' : ids }); + return ids; + }, + /** + * called when a node is selected by the user. Used internally. + * @private + * @name activate_node(obj, e) + * @param {mixed} obj the node + * @param {Object} e the related event + * @trigger activate_node.jstree, changed.jstree + */ + activate_node : function (obj, e) { + if(this.is_disabled(obj)) { + return false; + } + if(!e || typeof e !== 'object') { + e = {}; + } + + // ensure last_clicked is still in the DOM, make it fresh (maybe it was moved?) and make sure it is still selected, if not - make last_clicked the last selected node + this._data.core.last_clicked = this._data.core.last_clicked && this._data.core.last_clicked.id !== undefined ? this.get_node(this._data.core.last_clicked.id) : null; + if(this._data.core.last_clicked && !this._data.core.last_clicked.state.selected) { this._data.core.last_clicked = null; } + if(!this._data.core.last_clicked && this._data.core.selected.length) { this._data.core.last_clicked = this.get_node(this._data.core.selected[this._data.core.selected.length - 1]); } + + if(!this.settings.core.multiple || (!e.metaKey && !e.ctrlKey && !e.shiftKey) || (e.shiftKey && (!this._data.core.last_clicked || !this.get_parent(obj) || this.get_parent(obj) !== this._data.core.last_clicked.parent ) )) { + if(!this.settings.core.multiple && (e.metaKey || e.ctrlKey || e.shiftKey) && this.is_selected(obj)) { + this.deselect_node(obj, false, e); + } + else { + this.deselect_all(true); + this.select_node(obj, false, false, e); + this._data.core.last_clicked = this.get_node(obj); + } + } + else { + if(e.shiftKey) { + var o = this.get_node(obj).id, + l = this._data.core.last_clicked.id, + p = this.get_node(this._data.core.last_clicked.parent).children, + c = false, + i, j; + for(i = 0, j = p.length; i < j; i += 1) { + // separate IFs work whem o and l are the same + if(p[i] === o) { + c = !c; + } + if(p[i] === l) { + c = !c; + } + if(!this.is_disabled(p[i]) && (c || p[i] === o || p[i] === l)) { + if (!this.is_hidden(p[i])) { + this.select_node(p[i], true, false, e); + } + } + else { + this.deselect_node(p[i], true, e); + } + } + this.trigger('changed', { 'action' : 'select_node', 'node' : this.get_node(obj), 'selected' : this._data.core.selected, 'event' : e }); + } + else { + if(!this.is_selected(obj)) { + this.select_node(obj, false, false, e); + } + else { + this.deselect_node(obj, false, e); + } + } + } + /** + * triggered when an node is clicked or intercated with by the user + * @event + * @name activate_node.jstree + * @param {Object} node + * @param {Object} event the ooriginal event (if any) which triggered the call (may be an empty object) + */ + this.trigger('activate_node', { 'node' : this.get_node(obj), 'event' : e }); + }, + /** + * applies the hover state on a node, called when a node is hovered by the user. Used internally. + * @private + * @name hover_node(obj) + * @param {mixed} obj + * @trigger hover_node.jstree + */ + hover_node : function (obj) { + obj = this.get_node(obj, true); + if(!obj || !obj.length || obj.children('.jstree-hovered').length) { + return false; + } + var o = this.element.find('.jstree-hovered'), t = this.element; + if(o && o.length) { this.dehover_node(o); } + + obj.children('.jstree-anchor').addClass('jstree-hovered'); + /** + * triggered when an node is hovered + * @event + * @name hover_node.jstree + * @param {Object} node + */ + this.trigger('hover_node', { 'node' : this.get_node(obj) }); + setTimeout(function () { t.attr('aria-activedescendant', obj[0].id); }, 0); + }, + /** + * removes the hover state from a nodecalled when a node is no longer hovered by the user. Used internally. + * @private + * @name dehover_node(obj) + * @param {mixed} obj + * @trigger dehover_node.jstree + */ + dehover_node : function (obj) { + obj = this.get_node(obj, true); + if(!obj || !obj.length || !obj.children('.jstree-hovered').length) { + return false; + } + obj.children('.jstree-anchor').removeClass('jstree-hovered'); + /** + * triggered when an node is no longer hovered + * @event + * @name dehover_node.jstree + * @param {Object} node + */ + this.trigger('dehover_node', { 'node' : this.get_node(obj) }); + }, + /** + * select a node + * @name select_node(obj [, supress_event, prevent_open]) + * @param {mixed} obj an array can be used to select multiple nodes + * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered + * @param {Boolean} prevent_open if set to `true` parents of the selected node won't be opened + * @trigger select_node.jstree, changed.jstree + */ + select_node : function (obj, supress_event, prevent_open, e) { + var dom, t1, t2, th; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.select_node(obj[t1], supress_event, prevent_open, e); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + dom = this.get_node(obj, true); + if(!obj.state.selected) { + obj.state.selected = true; + this._data.core.selected.push(obj.id); + if(!prevent_open) { + dom = this._open_to(obj); + } + if(dom && dom.length) { + dom.attr('aria-selected', true).children('.jstree-anchor').addClass('jstree-clicked'); + } + /** + * triggered when an node is selected + * @event + * @name select_node.jstree + * @param {Object} node + * @param {Array} selected the current selection + * @param {Object} event the event (if any) that triggered this select_node + */ + this.trigger('select_node', { 'node' : obj, 'selected' : this._data.core.selected, 'event' : e }); + if(!supress_event) { + /** + * triggered when selection changes + * @event + * @name changed.jstree + * @param {Object} node + * @param {Object} action the action that caused the selection to change + * @param {Array} selected the current selection + * @param {Object} event the event (if any) that triggered this changed event + */ + this.trigger('changed', { 'action' : 'select_node', 'node' : obj, 'selected' : this._data.core.selected, 'event' : e }); + } + } + }, + /** + * deselect a node + * @name deselect_node(obj [, supress_event]) + * @param {mixed} obj an array can be used to deselect multiple nodes + * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered + * @trigger deselect_node.jstree, changed.jstree + */ + deselect_node : function (obj, supress_event, e) { + var t1, t2, dom; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.deselect_node(obj[t1], supress_event, e); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + dom = this.get_node(obj, true); + if(obj.state.selected) { + obj.state.selected = false; + this._data.core.selected = $.vakata.array_remove_item(this._data.core.selected, obj.id); + if(dom.length) { + dom.attr('aria-selected', false).children('.jstree-anchor').removeClass('jstree-clicked'); + } + /** + * triggered when an node is deselected + * @event + * @name deselect_node.jstree + * @param {Object} node + * @param {Array} selected the current selection + * @param {Object} event the event (if any) that triggered this deselect_node + */ + this.trigger('deselect_node', { 'node' : obj, 'selected' : this._data.core.selected, 'event' : e }); + if(!supress_event) { + this.trigger('changed', { 'action' : 'deselect_node', 'node' : obj, 'selected' : this._data.core.selected, 'event' : e }); + } + } + }, + /** + * select all nodes in the tree + * @name select_all([supress_event]) + * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered + * @trigger select_all.jstree, changed.jstree + */ + select_all : function (supress_event) { + var tmp = this._data.core.selected.concat([]), i, j; + this._data.core.selected = this._model.data[$.jstree.root].children_d.concat(); + for(i = 0, j = this._data.core.selected.length; i < j; i++) { + if(this._model.data[this._data.core.selected[i]]) { + this._model.data[this._data.core.selected[i]].state.selected = true; + } + } + this.redraw(true); + /** + * triggered when all nodes are selected + * @event + * @name select_all.jstree + * @param {Array} selected the current selection + */ + this.trigger('select_all', { 'selected' : this._data.core.selected }); + if(!supress_event) { + this.trigger('changed', { 'action' : 'select_all', 'selected' : this._data.core.selected, 'old_selection' : tmp }); + } + }, + /** + * deselect all selected nodes + * @name deselect_all([supress_event]) + * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered + * @trigger deselect_all.jstree, changed.jstree + */ + deselect_all : function (supress_event) { + var tmp = this._data.core.selected.concat([]), i, j; + for(i = 0, j = this._data.core.selected.length; i < j; i++) { + if(this._model.data[this._data.core.selected[i]]) { + this._model.data[this._data.core.selected[i]].state.selected = false; + } + } + this._data.core.selected = []; + this.element.find('.jstree-clicked').removeClass('jstree-clicked').parent().attr('aria-selected', false); + /** + * triggered when all nodes are deselected + * @event + * @name deselect_all.jstree + * @param {Object} node the previous selection + * @param {Array} selected the current selection + */ + this.trigger('deselect_all', { 'selected' : this._data.core.selected, 'node' : tmp }); + if(!supress_event) { + this.trigger('changed', { 'action' : 'deselect_all', 'selected' : this._data.core.selected, 'old_selection' : tmp }); + } + }, + /** + * checks if a node is selected + * @name is_selected(obj) + * @param {mixed} obj + * @return {Boolean} + */ + is_selected : function (obj) { + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + return obj.state.selected; + }, + /** + * get an array of all selected nodes + * @name get_selected([full]) + * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned + * @return {Array} + */ + get_selected : function (full) { + return full ? $.map(this._data.core.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.core.selected.slice(); + }, + /** + * get an array of all top level selected nodes (ignoring children of selected nodes) + * @name get_top_selected([full]) + * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned + * @return {Array} + */ + get_top_selected : function (full) { + var tmp = this.get_selected(true), + obj = {}, i, j, k, l; + for(i = 0, j = tmp.length; i < j; i++) { + obj[tmp[i].id] = tmp[i]; + } + for(i = 0, j = tmp.length; i < j; i++) { + for(k = 0, l = tmp[i].children_d.length; k < l; k++) { + if(obj[tmp[i].children_d[k]]) { + delete obj[tmp[i].children_d[k]]; + } + } + } + tmp = []; + for(i in obj) { + if(obj.hasOwnProperty(i)) { + tmp.push(i); + } + } + return full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp; + }, + /** + * get an array of all bottom level selected nodes (ignoring selected parents) + * @name get_bottom_selected([full]) + * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned + * @return {Array} + */ + get_bottom_selected : function (full) { + var tmp = this.get_selected(true), + obj = [], i, j; + for(i = 0, j = tmp.length; i < j; i++) { + if(!tmp[i].children.length) { + obj.push(tmp[i].id); + } + } + return full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj; + }, + /** + * gets the current state of the tree so that it can be restored later with `set_state(state)`. Used internally. + * @name get_state() + * @private + * @return {Object} + */ + get_state : function () { + var state = { + 'core' : { + 'open' : [], + 'scroll' : { + 'left' : this.element.scrollLeft(), + 'top' : this.element.scrollTop() + }, + /*! + 'themes' : { + 'name' : this.get_theme(), + 'icons' : this._data.core.themes.icons, + 'dots' : this._data.core.themes.dots + }, + */ + 'selected' : [] + } + }, i; + for(i in this._model.data) { + if(this._model.data.hasOwnProperty(i)) { + if(i !== $.jstree.root) { + if(this._model.data[i].state.opened) { + state.core.open.push(i); + } + if(this._model.data[i].state.selected) { + state.core.selected.push(i); + } + } + } + } + return state; + }, + /** + * sets the state of the tree. Used internally. + * @name set_state(state [, callback]) + * @private + * @param {Object} state the state to restore. Keep in mind this object is passed by reference and jstree will modify it. + * @param {Function} callback an optional function to execute once the state is restored. + * @trigger set_state.jstree + */ + set_state : function (state, callback) { + if(state) { + if(state.core) { + var res, n, t, _this, i; + if(state.core.open) { + if(!$.isArray(state.core.open) || !state.core.open.length) { + delete state.core.open; + this.set_state(state, callback); + } + else { + this._load_nodes(state.core.open, function (nodes) { + this.open_node(nodes, false, 0); + delete state.core.open; + this.set_state(state, callback); + }); + } + return false; + } + if(state.core.scroll) { + if(state.core.scroll && state.core.scroll.left !== undefined) { + this.element.scrollLeft(state.core.scroll.left); + } + if(state.core.scroll && state.core.scroll.top !== undefined) { + this.element.scrollTop(state.core.scroll.top); + } + delete state.core.scroll; + this.set_state(state, callback); + return false; + } + if(state.core.selected) { + _this = this; + this.deselect_all(); + $.each(state.core.selected, function (i, v) { + _this.select_node(v, false, true); + }); + delete state.core.selected; + this.set_state(state, callback); + return false; + } + for(i in state) { + if(state.hasOwnProperty(i) && i !== "core" && $.inArray(i, this.settings.plugins) === -1) { + delete state[i]; + } + } + if($.isEmptyObject(state.core)) { + delete state.core; + this.set_state(state, callback); + return false; + } + } + if($.isEmptyObject(state)) { + state = null; + if(callback) { callback.call(this); } + /** + * triggered when a `set_state` call completes + * @event + * @name set_state.jstree + */ + this.trigger('set_state'); + return false; + } + return true; + } + return false; + }, + /** + * refreshes the tree - all nodes are reloaded with calls to `load_node`. + * @name refresh() + * @param {Boolean} skip_loading an option to skip showing the loading indicator + * @param {Mixed} forget_state if set to `true` state will not be reapplied, if set to a function (receiving the current state as argument) the result of that function will be used as state + * @trigger refresh.jstree + */ + refresh : function (skip_loading, forget_state) { + this._data.core.state = forget_state === true ? {} : this.get_state(); + if(forget_state && $.isFunction(forget_state)) { this._data.core.state = forget_state.call(this, this._data.core.state); } + this._cnt = 0; + this._model.data = {}; + this._model.data[$.jstree.root] = { + id : $.jstree.root, + parent : null, + parents : [], + children : [], + children_d : [], + state : { loaded : false } + }; + this._data.core.selected = []; + this._data.core.last_clicked = null; + this._data.core.focused = null; + + var c = this.get_container_ul()[0].className; + if(!skip_loading) { + this.element.html("<"+"ul class='"+c+"' role='group'><"+"li class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='treeitem' id='j"+this._id+"_loading'><"+"a class='jstree-anchor' href='#'>" + this.get_string("Loading ...") + ""); + this.element.attr('aria-activedescendant','j'+this._id+'_loading'); + } + this.load_node($.jstree.root, function (o, s) { + if(s) { + this.get_container_ul()[0].className = c; + if(this._firstChild(this.get_container_ul()[0])) { + this.element.attr('aria-activedescendant',this._firstChild(this.get_container_ul()[0]).id); + } + this.set_state($.extend(true, {}, this._data.core.state), function () { + /** + * triggered when a `refresh` call completes + * @event + * @name refresh.jstree + */ + this.trigger('refresh'); + }); + } + this._data.core.state = null; + }); + }, + /** + * refreshes a node in the tree (reload its children) all opened nodes inside that node are reloaded with calls to `load_node`. + * @name refresh_node(obj) + * @param {mixed} obj the node + * @trigger refresh_node.jstree + */ + refresh_node : function (obj) { + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + var opened = [], to_load = [], s = this._data.core.selected.concat([]); + to_load.push(obj.id); + if(obj.state.opened === true) { opened.push(obj.id); } + this.get_node(obj, true).find('.jstree-open').each(function() { to_load.push(this.id); opened.push(this.id); }); + this._load_nodes(to_load, $.proxy(function (nodes) { + this.open_node(opened, false, 0); + this.select_node(s); + /** + * triggered when a node is refreshed + * @event + * @name refresh_node.jstree + * @param {Object} node - the refreshed node + * @param {Array} nodes - an array of the IDs of the nodes that were reloaded + */ + this.trigger('refresh_node', { 'node' : obj, 'nodes' : nodes }); + }, this), false, true); + }, + /** + * set (change) the ID of a node + * @name set_id(obj, id) + * @param {mixed} obj the node + * @param {String} id the new ID + * @return {Boolean} + * @trigger set_id.jstree + */ + set_id : function (obj, id) { + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + var i, j, m = this._model.data, old = obj.id; + id = id.toString(); + // update parents (replace current ID with new one in children and children_d) + m[obj.parent].children[$.inArray(obj.id, m[obj.parent].children)] = id; + for(i = 0, j = obj.parents.length; i < j; i++) { + m[obj.parents[i]].children_d[$.inArray(obj.id, m[obj.parents[i]].children_d)] = id; + } + // update children (replace current ID with new one in parent and parents) + for(i = 0, j = obj.children.length; i < j; i++) { + m[obj.children[i]].parent = id; + } + for(i = 0, j = obj.children_d.length; i < j; i++) { + m[obj.children_d[i]].parents[$.inArray(obj.id, m[obj.children_d[i]].parents)] = id; + } + i = $.inArray(obj.id, this._data.core.selected); + if(i !== -1) { this._data.core.selected[i] = id; } + // update model and obj itself (obj.id, this._model.data[KEY]) + i = this.get_node(obj.id, true); + if(i) { + i.attr('id', id); //.children('.jstree-anchor').attr('id', id + '_anchor').end().attr('aria-labelledby', id + '_anchor'); + if(this.element.attr('aria-activedescendant') === obj.id) { + this.element.attr('aria-activedescendant', id); + } + } + delete m[obj.id]; + obj.id = id; + obj.li_attr.id = id; + m[id] = obj; + /** + * triggered when a node id value is changed + * @event + * @name set_id.jstree + * @param {Object} node + * @param {String} old the old id + */ + this.trigger('set_id',{ "node" : obj, "new" : obj.id, "old" : old }); + return true; + }, + /** + * get the text value of a node + * @name get_text(obj) + * @param {mixed} obj the node + * @return {String} + */ + get_text : function (obj) { + obj = this.get_node(obj); + return (!obj || obj.id === $.jstree.root) ? false : obj.text; + }, + /** + * set the text value of a node. Used internally, please use `rename_node(obj, val)`. + * @private + * @name set_text(obj, val) + * @param {mixed} obj the node, you can pass an array to set the text on multiple nodes + * @param {String} val the new text value + * @return {Boolean} + * @trigger set_text.jstree + */ + set_text : function (obj, val) { + var t1, t2; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.set_text(obj[t1], val); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + obj.text = val; + if(this.get_node(obj, true).length) { + this.redraw_node(obj.id); + } + /** + * triggered when a node text value is changed + * @event + * @name set_text.jstree + * @param {Object} obj + * @param {String} text the new value + */ + this.trigger('set_text',{ "obj" : obj, "text" : val }); + return true; + }, + /** + * gets a JSON representation of a node (or the whole tree) + * @name get_json([obj, options]) + * @param {mixed} obj + * @param {Object} options + * @param {Boolean} options.no_state do not return state information + * @param {Boolean} options.no_id do not return ID + * @param {Boolean} options.no_children do not include children + * @param {Boolean} options.no_data do not include node data + * @param {Boolean} options.no_li_attr do not include LI attributes + * @param {Boolean} options.no_a_attr do not include A attributes + * @param {Boolean} options.flat return flat JSON instead of nested + * @return {Object} + */ + get_json : function (obj, options, flat) { + obj = this.get_node(obj || $.jstree.root); + if(!obj) { return false; } + if(options && options.flat && !flat) { flat = []; } + var tmp = { + 'id' : obj.id, + 'text' : obj.text, + 'icon' : this.get_icon(obj), + 'li_attr' : $.extend(true, {}, obj.li_attr), + 'a_attr' : $.extend(true, {}, obj.a_attr), + 'state' : {}, + 'data' : options && options.no_data ? false : $.extend(true, {}, obj.data) + //( this.get_node(obj, true).length ? this.get_node(obj, true).data() : obj.data ), + }, i, j; + if(options && options.flat) { + tmp.parent = obj.parent; + } + else { + tmp.children = []; + } + if(!options || !options.no_state) { + for(i in obj.state) { + if(obj.state.hasOwnProperty(i)) { + tmp.state[i] = obj.state[i]; + } + } + } else { + delete tmp.state; + } + if(options && options.no_li_attr) { + delete tmp.li_attr; + } + if(options && options.no_a_attr) { + delete tmp.a_attr; + } + if(options && options.no_id) { + delete tmp.id; + if(tmp.li_attr && tmp.li_attr.id) { + delete tmp.li_attr.id; + } + if(tmp.a_attr && tmp.a_attr.id) { + delete tmp.a_attr.id; + } + } + if(options && options.flat && obj.id !== $.jstree.root) { + flat.push(tmp); + } + if(!options || !options.no_children) { + for(i = 0, j = obj.children.length; i < j; i++) { + if(options && options.flat) { + this.get_json(obj.children[i], options, flat); + } + else { + tmp.children.push(this.get_json(obj.children[i], options)); + } + } + } + return options && options.flat ? flat : (obj.id === $.jstree.root ? tmp.children : tmp); + }, + /** + * create a new node (do not confuse with load_node) + * @name create_node([par, node, pos, callback, is_loaded]) + * @param {mixed} par the parent node (to create a root node use either "#" (string) or `null`) + * @param {mixed} node the data for the new node (a valid JSON object, or a simple string with the name) + * @param {mixed} pos the index at which to insert the node, "first" and "last" are also supported, default is "last" + * @param {Function} callback a function to be called once the node is created + * @param {Boolean} is_loaded internal argument indicating if the parent node was succesfully loaded + * @return {String} the ID of the newly create node + * @trigger model.jstree, create_node.jstree + */ + create_node : function (par, node, pos, callback, is_loaded) { + if(par === null) { par = $.jstree.root; } + par = this.get_node(par); + if(!par) { return false; } + pos = pos === undefined ? "last" : pos; + if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { + return this.load_node(par, function () { this.create_node(par, node, pos, callback, true); }); + } + if(!node) { node = { "text" : this.get_string('New node') }; } + if(typeof node === "string") { node = { "text" : node }; } + if(node.text === undefined) { node.text = this.get_string('New node'); } + var tmp, dpc, i, j; + + if(par.id === $.jstree.root) { + if(pos === "before") { pos = "first"; } + if(pos === "after") { pos = "last"; } + } + switch(pos) { + case "before": + tmp = this.get_node(par.parent); + pos = $.inArray(par.id, tmp.children); + par = tmp; + break; + case "after" : + tmp = this.get_node(par.parent); + pos = $.inArray(par.id, tmp.children) + 1; + par = tmp; + break; + case "inside": + case "first": + pos = 0; + break; + case "last": + pos = par.children.length; + break; + default: + if(!pos) { pos = 0; } + break; + } + if(pos > par.children.length) { pos = par.children.length; } + if(!node.id) { node.id = true; } + if(!this.check("create_node", node, par, pos)) { + this.settings.core.error.call(this, this._data.core.last_error); + return false; + } + if(node.id === true) { delete node.id; } + node = this._parse_model_from_json(node, par.id, par.parents.concat()); + if(!node) { return false; } + tmp = this.get_node(node); + dpc = []; + dpc.push(node); + dpc = dpc.concat(tmp.children_d); + this.trigger('model', { "nodes" : dpc, "parent" : par.id }); + + par.children_d = par.children_d.concat(dpc); + for(i = 0, j = par.parents.length; i < j; i++) { + this._model.data[par.parents[i]].children_d = this._model.data[par.parents[i]].children_d.concat(dpc); + } + node = tmp; + tmp = []; + for(i = 0, j = par.children.length; i < j; i++) { + tmp[i >= pos ? i+1 : i] = par.children[i]; + } + tmp[pos] = node.id; + par.children = tmp; + + this.redraw_node(par, true); + if(callback) { callback.call(this, this.get_node(node)); } + /** + * triggered when a node is created + * @event + * @name create_node.jstree + * @param {Object} node + * @param {String} parent the parent's ID + * @param {Number} position the position of the new node among the parent's children + */ + this.trigger('create_node', { "node" : this.get_node(node), "parent" : par.id, "position" : pos }); + return node.id; + }, + /** + * set the text value of a node + * @name rename_node(obj, val) + * @param {mixed} obj the node, you can pass an array to rename multiple nodes to the same name + * @param {String} val the new text value + * @return {Boolean} + * @trigger rename_node.jstree + */ + rename_node : function (obj, val) { + var t1, t2, old; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.rename_node(obj[t1], val); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + old = obj.text; + if(!this.check("rename_node", obj, this.get_parent(obj), val)) { + this.settings.core.error.call(this, this._data.core.last_error); + return false; + } + this.set_text(obj, val); // .apply(this, Array.prototype.slice.call(arguments)) + /** + * triggered when a node is renamed + * @event + * @name rename_node.jstree + * @param {Object} node + * @param {String} text the new value + * @param {String} old the old value + */ + this.trigger('rename_node', { "node" : obj, "text" : val, "old" : old }); + return true; + }, + /** + * remove a node + * @name delete_node(obj) + * @param {mixed} obj the node, you can pass an array to delete multiple nodes + * @return {Boolean} + * @trigger delete_node.jstree, changed.jstree + */ + delete_node : function (obj) { + var t1, t2, par, pos, tmp, i, j, k, l, c, top, lft; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.delete_node(obj[t1]); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + par = this.get_node(obj.parent); + pos = $.inArray(obj.id, par.children); + c = false; + if(!this.check("delete_node", obj, par, pos)) { + this.settings.core.error.call(this, this._data.core.last_error); + return false; + } + if(pos !== -1) { + par.children = $.vakata.array_remove(par.children, pos); + } + tmp = obj.children_d.concat([]); + tmp.push(obj.id); + for(i = 0, j = obj.parents.length; i < j; i++) { + this._model.data[obj.parents[i]].children_d = $.vakata.array_filter(this._model.data[obj.parents[i]].children_d, function (v) { + return $.inArray(v, tmp) === -1; + }); + } + for(k = 0, l = tmp.length; k < l; k++) { + if(this._model.data[tmp[k]].state.selected) { + c = true; + break; + } + } + if (c) { + this._data.core.selected = $.vakata.array_filter(this._data.core.selected, function (v) { + return $.inArray(v, tmp) === -1; + }); + } + /** + * triggered when a node is deleted + * @event + * @name delete_node.jstree + * @param {Object} node + * @param {String} parent the parent's ID + */ + this.trigger('delete_node', { "node" : obj, "parent" : par.id }); + if(c) { + this.trigger('changed', { 'action' : 'delete_node', 'node' : obj, 'selected' : this._data.core.selected, 'parent' : par.id }); + } + for(k = 0, l = tmp.length; k < l; k++) { + delete this._model.data[tmp[k]]; + } + if($.inArray(this._data.core.focused, tmp) !== -1) { + this._data.core.focused = null; + top = this.element[0].scrollTop; + lft = this.element[0].scrollLeft; + if(par.id === $.jstree.root) { + if (this._model.data[$.jstree.root].children[0]) { + this.get_node(this._model.data[$.jstree.root].children[0], true).children('.jstree-anchor').focus(); + } + } + else { + this.get_node(par, true).children('.jstree-anchor').focus(); + } + this.element[0].scrollTop = top; + this.element[0].scrollLeft = lft; + } + this.redraw_node(par, true); + return true; + }, + /** + * check if an operation is premitted on the tree. Used internally. + * @private + * @name check(chk, obj, par, pos) + * @param {String} chk the operation to check, can be "create_node", "rename_node", "delete_node", "copy_node" or "move_node" + * @param {mixed} obj the node + * @param {mixed} par the parent + * @param {mixed} pos the position to insert at, or if "rename_node" - the new name + * @param {mixed} more some various additional information, for example if a "move_node" operations is triggered by DND this will be the hovered node + * @return {Boolean} + */ + check : function (chk, obj, par, pos, more) { + obj = obj && obj.id ? obj : this.get_node(obj); + par = par && par.id ? par : this.get_node(par); + var tmp = chk.match(/^move_node|copy_node|create_node$/i) ? par : obj, + chc = this.settings.core.check_callback; + if(chk === "move_node" || chk === "copy_node") { + if((!more || !more.is_multi) && (obj.id === par.id || (chk === "move_node" && $.inArray(obj.id, par.children) === pos) || $.inArray(par.id, obj.children_d) !== -1)) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_01', 'reason' : 'Moving parent inside child', 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + return false; + } + } + if(tmp && tmp.data) { tmp = tmp.data; } + if(tmp && tmp.functions && (tmp.functions[chk] === false || tmp.functions[chk] === true)) { + if(tmp.functions[chk] === false) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_02', 'reason' : 'Node data prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + } + return tmp.functions[chk]; + } + if(chc === false || ($.isFunction(chc) && chc.call(this, chk, obj, par, pos, more) === false) || (chc && chc[chk] === false)) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_03', 'reason' : 'User config for core.check_callback prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + return false; + } + return true; + }, + /** + * get the last error + * @name last_error() + * @return {Object} + */ + last_error : function () { + return this._data.core.last_error; + }, + /** + * move a node to a new parent + * @name move_node(obj, par [, pos, callback, is_loaded]) + * @param {mixed} obj the node to move, pass an array to move multiple nodes + * @param {mixed} par the new parent + * @param {mixed} pos the position to insert at (besides integer values, "first" and "last" are supported, as well as "before" and "after"), defaults to integer `0` + * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position + * @param {Boolean} is_loaded internal parameter indicating if the parent node has been loaded + * @param {Boolean} skip_redraw internal parameter indicating if the tree should be redrawn + * @param {Boolean} instance internal parameter indicating if the node comes from another instance + * @trigger move_node.jstree + */ + move_node : function (obj, par, pos, callback, is_loaded, skip_redraw, origin) { + var t1, t2, old_par, old_pos, new_par, old_ins, is_multi, dpc, tmp, i, j, k, l, p; + + par = this.get_node(par); + pos = pos === undefined ? 0 : pos; + if(!par) { return false; } + if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { + return this.load_node(par, function () { this.move_node(obj, par, pos, callback, true, false, origin); }); + } + + if($.isArray(obj)) { + if(obj.length === 1) { + obj = obj[0]; + } + else { + //obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + if((tmp = this.move_node(obj[t1], par, pos, callback, is_loaded, false, origin))) { + par = tmp; + pos = "after"; + } + } + this.redraw(); + return true; + } + } + obj = obj && obj.id ? obj : this.get_node(obj); + + if(!obj || obj.id === $.jstree.root) { return false; } + + old_par = (obj.parent || $.jstree.root).toString(); + new_par = (!pos.toString().match(/^(before|after)$/) || par.id === $.jstree.root) ? par : this.get_node(par.parent); + old_ins = origin ? origin : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id)); + is_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id); + old_pos = old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1; + if(old_ins && old_ins._id) { + obj = old_ins._model.data[obj.id]; + } + + if(is_multi) { + if((tmp = this.copy_node(obj, par, pos, callback, is_loaded, false, origin))) { + if(old_ins) { old_ins.delete_node(obj); } + return tmp; + } + return false; + } + //var m = this._model.data; + if(par.id === $.jstree.root) { + if(pos === "before") { pos = "first"; } + if(pos === "after") { pos = "last"; } + } + switch(pos) { + case "before": + pos = $.inArray(par.id, new_par.children); + break; + case "after" : + pos = $.inArray(par.id, new_par.children) + 1; + break; + case "inside": + case "first": + pos = 0; + break; + case "last": + pos = new_par.children.length; + break; + default: + if(!pos) { pos = 0; } + break; + } + if(pos > new_par.children.length) { pos = new_par.children.length; } + if(!this.check("move_node", obj, new_par, pos, { 'core' : true, 'origin' : origin, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) { + this.settings.core.error.call(this, this._data.core.last_error); + return false; + } + if(obj.parent === new_par.id) { + dpc = new_par.children.concat(); + tmp = $.inArray(obj.id, dpc); + if(tmp !== -1) { + dpc = $.vakata.array_remove(dpc, tmp); + if(pos > tmp) { pos--; } + } + tmp = []; + for(i = 0, j = dpc.length; i < j; i++) { + tmp[i >= pos ? i+1 : i] = dpc[i]; + } + tmp[pos] = obj.id; + new_par.children = tmp; + this._node_changed(new_par.id); + this.redraw(new_par.id === $.jstree.root); + } + else { + // clean old parent and up + tmp = obj.children_d.concat(); + tmp.push(obj.id); + for(i = 0, j = obj.parents.length; i < j; i++) { + dpc = []; + p = old_ins._model.data[obj.parents[i]].children_d; + for(k = 0, l = p.length; k < l; k++) { + if($.inArray(p[k], tmp) === -1) { + dpc.push(p[k]); + } + } + old_ins._model.data[obj.parents[i]].children_d = dpc; + } + old_ins._model.data[old_par].children = $.vakata.array_remove_item(old_ins._model.data[old_par].children, obj.id); + + // insert into new parent and up + for(i = 0, j = new_par.parents.length; i < j; i++) { + this._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(tmp); + } + dpc = []; + for(i = 0, j = new_par.children.length; i < j; i++) { + dpc[i >= pos ? i+1 : i] = new_par.children[i]; + } + dpc[pos] = obj.id; + new_par.children = dpc; + new_par.children_d.push(obj.id); + new_par.children_d = new_par.children_d.concat(obj.children_d); + + // update object + obj.parent = new_par.id; + tmp = new_par.parents.concat(); + tmp.unshift(new_par.id); + p = obj.parents.length; + obj.parents = tmp; + + // update object children + tmp = tmp.concat(); + for(i = 0, j = obj.children_d.length; i < j; i++) { + this._model.data[obj.children_d[i]].parents = this._model.data[obj.children_d[i]].parents.slice(0,p*-1); + Array.prototype.push.apply(this._model.data[obj.children_d[i]].parents, tmp); + } + + if(old_par === $.jstree.root || new_par.id === $.jstree.root) { + this._model.force_full_redraw = true; + } + if(!this._model.force_full_redraw) { + this._node_changed(old_par); + this._node_changed(new_par.id); + } + if(!skip_redraw) { + this.redraw(); + } + } + if(callback) { callback.call(this, obj, new_par, pos); } + /** + * triggered when a node is moved + * @event + * @name move_node.jstree + * @param {Object} node + * @param {String} parent the parent's ID + * @param {Number} position the position of the node among the parent's children + * @param {String} old_parent the old parent of the node + * @param {Number} old_position the old position of the node + * @param {Boolean} is_multi do the node and new parent belong to different instances + * @param {jsTree} old_instance the instance the node came from + * @param {jsTree} new_instance the instance of the new parent + */ + this.trigger('move_node', { "node" : obj, "parent" : new_par.id, "position" : pos, "old_parent" : old_par, "old_position" : old_pos, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this }); + return obj.id; + }, + /** + * copy a node to a new parent + * @name copy_node(obj, par [, pos, callback, is_loaded]) + * @param {mixed} obj the node to copy, pass an array to copy multiple nodes + * @param {mixed} par the new parent + * @param {mixed} pos the position to insert at (besides integer values, "first" and "last" are supported, as well as "before" and "after"), defaults to integer `0` + * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position + * @param {Boolean} is_loaded internal parameter indicating if the parent node has been loaded + * @param {Boolean} skip_redraw internal parameter indicating if the tree should be redrawn + * @param {Boolean} instance internal parameter indicating if the node comes from another instance + * @trigger model.jstree copy_node.jstree + */ + copy_node : function (obj, par, pos, callback, is_loaded, skip_redraw, origin) { + var t1, t2, dpc, tmp, i, j, node, old_par, new_par, old_ins, is_multi; + + par = this.get_node(par); + pos = pos === undefined ? 0 : pos; + if(!par) { return false; } + if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { + return this.load_node(par, function () { this.copy_node(obj, par, pos, callback, true, false, origin); }); + } + + if($.isArray(obj)) { + if(obj.length === 1) { + obj = obj[0]; + } + else { + //obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + if((tmp = this.copy_node(obj[t1], par, pos, callback, is_loaded, true, origin))) { + par = tmp; + pos = "after"; + } + } + this.redraw(); + return true; + } + } + obj = obj && obj.id ? obj : this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + + old_par = (obj.parent || $.jstree.root).toString(); + new_par = (!pos.toString().match(/^(before|after)$/) || par.id === $.jstree.root) ? par : this.get_node(par.parent); + old_ins = origin ? origin : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id)); + is_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id); + + if(old_ins && old_ins._id) { + obj = old_ins._model.data[obj.id]; + } + + if(par.id === $.jstree.root) { + if(pos === "before") { pos = "first"; } + if(pos === "after") { pos = "last"; } + } + switch(pos) { + case "before": + pos = $.inArray(par.id, new_par.children); + break; + case "after" : + pos = $.inArray(par.id, new_par.children) + 1; + break; + case "inside": + case "first": + pos = 0; + break; + case "last": + pos = new_par.children.length; + break; + default: + if(!pos) { pos = 0; } + break; + } + if(pos > new_par.children.length) { pos = new_par.children.length; } + if(!this.check("copy_node", obj, new_par, pos, { 'core' : true, 'origin' : origin, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) { + this.settings.core.error.call(this, this._data.core.last_error); + return false; + } + node = old_ins ? old_ins.get_json(obj, { no_id : true, no_data : true, no_state : true }) : obj; + if(!node) { return false; } + if(node.id === true) { delete node.id; } + node = this._parse_model_from_json(node, new_par.id, new_par.parents.concat()); + if(!node) { return false; } + tmp = this.get_node(node); + if(obj && obj.state && obj.state.loaded === false) { tmp.state.loaded = false; } + dpc = []; + dpc.push(node); + dpc = dpc.concat(tmp.children_d); + this.trigger('model', { "nodes" : dpc, "parent" : new_par.id }); + + // insert into new parent and up + for(i = 0, j = new_par.parents.length; i < j; i++) { + this._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(dpc); + } + dpc = []; + for(i = 0, j = new_par.children.length; i < j; i++) { + dpc[i >= pos ? i+1 : i] = new_par.children[i]; + } + dpc[pos] = tmp.id; + new_par.children = dpc; + new_par.children_d.push(tmp.id); + new_par.children_d = new_par.children_d.concat(tmp.children_d); + + if(new_par.id === $.jstree.root) { + this._model.force_full_redraw = true; + } + if(!this._model.force_full_redraw) { + this._node_changed(new_par.id); + } + if(!skip_redraw) { + this.redraw(new_par.id === $.jstree.root); + } + if(callback) { callback.call(this, tmp, new_par, pos); } + /** + * triggered when a node is copied + * @event + * @name copy_node.jstree + * @param {Object} node the copied node + * @param {Object} original the original node + * @param {String} parent the parent's ID + * @param {Number} position the position of the node among the parent's children + * @param {String} old_parent the old parent of the node + * @param {Number} old_position the position of the original node + * @param {Boolean} is_multi do the node and new parent belong to different instances + * @param {jsTree} old_instance the instance the node came from + * @param {jsTree} new_instance the instance of the new parent + */ + this.trigger('copy_node', { "node" : tmp, "original" : obj, "parent" : new_par.id, "position" : pos, "old_parent" : old_par, "old_position" : old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1,'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this }); + return tmp.id; + }, + /** + * cut a node (a later call to `paste(obj)` would move the node) + * @name cut(obj) + * @param {mixed} obj multiple objects can be passed using an array + * @trigger cut.jstree + */ + cut : function (obj) { + if(!obj) { obj = this._data.core.selected.concat(); } + if(!$.isArray(obj)) { obj = [obj]; } + if(!obj.length) { return false; } + var tmp = [], o, t1, t2; + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + o = this.get_node(obj[t1]); + if(o && o.id && o.id !== $.jstree.root) { tmp.push(o); } + } + if(!tmp.length) { return false; } + ccp_node = tmp; + ccp_inst = this; + ccp_mode = 'move_node'; + /** + * triggered when nodes are added to the buffer for moving + * @event + * @name cut.jstree + * @param {Array} node + */ + this.trigger('cut', { "node" : obj }); + }, + /** + * copy a node (a later call to `paste(obj)` would copy the node) + * @name copy(obj) + * @param {mixed} obj multiple objects can be passed using an array + * @trigger copy.jstree + */ + copy : function (obj) { + if(!obj) { obj = this._data.core.selected.concat(); } + if(!$.isArray(obj)) { obj = [obj]; } + if(!obj.length) { return false; } + var tmp = [], o, t1, t2; + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + o = this.get_node(obj[t1]); + if(o && o.id && o.id !== $.jstree.root) { tmp.push(o); } + } + if(!tmp.length) { return false; } + ccp_node = tmp; + ccp_inst = this; + ccp_mode = 'copy_node'; + /** + * triggered when nodes are added to the buffer for copying + * @event + * @name copy.jstree + * @param {Array} node + */ + this.trigger('copy', { "node" : obj }); + }, + /** + * get the current buffer (any nodes that are waiting for a paste operation) + * @name get_buffer() + * @return {Object} an object consisting of `mode` ("copy_node" or "move_node"), `node` (an array of objects) and `inst` (the instance) + */ + get_buffer : function () { + return { 'mode' : ccp_mode, 'node' : ccp_node, 'inst' : ccp_inst }; + }, + /** + * check if there is something in the buffer to paste + * @name can_paste() + * @return {Boolean} + */ + can_paste : function () { + return ccp_mode !== false && ccp_node !== false; // && ccp_inst._model.data[ccp_node]; + }, + /** + * copy or move the previously cut or copied nodes to a new parent + * @name paste(obj [, pos]) + * @param {mixed} obj the new parent + * @param {mixed} pos the position to insert at (besides integer, "first" and "last" are supported), defaults to integer `0` + * @trigger paste.jstree + */ + paste : function (obj, pos) { + obj = this.get_node(obj); + if(!obj || !ccp_mode || !ccp_mode.match(/^(copy_node|move_node)$/) || !ccp_node) { return false; } + if(this[ccp_mode](ccp_node, obj, pos, false, false, false, ccp_inst)) { + /** + * triggered when paste is invoked + * @event + * @name paste.jstree + * @param {String} parent the ID of the receiving node + * @param {Array} node the nodes in the buffer + * @param {String} mode the performed operation - "copy_node" or "move_node" + */ + this.trigger('paste', { "parent" : obj.id, "node" : ccp_node, "mode" : ccp_mode }); + } + ccp_node = false; + ccp_mode = false; + ccp_inst = false; + }, + /** + * clear the buffer of previously copied or cut nodes + * @name clear_buffer() + * @trigger clear_buffer.jstree + */ + clear_buffer : function () { + ccp_node = false; + ccp_mode = false; + ccp_inst = false; + /** + * triggered when the copy / cut buffer is cleared + * @event + * @name clear_buffer.jstree + */ + this.trigger('clear_buffer'); + }, + /** + * put a node in edit mode (input field to rename the node) + * @name edit(obj [, default_text, callback]) + * @param {mixed} obj + * @param {String} default_text the text to populate the input with (if omitted or set to a non-string value the node's text value is used) + * @param {Function} callback a function to be called once the text box is blurred, it is called in the instance's scope and receives the node, a status parameter (true if the rename is successful, false otherwise) and a boolean indicating if the user cancelled the edit. You can access the node's title using .text + */ + edit : function (obj, default_text, callback) { + var rtl, w, a, s, t, h1, h2, fn, tmp, cancel = false; + obj = this.get_node(obj); + if(!obj) { return false; } + if(this.settings.core.check_callback === false) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_07', 'reason' : 'Could not edit node because of check_callback' }; + this.settings.core.error.call(this, this._data.core.last_error); + return false; + } + tmp = obj; + default_text = typeof default_text === 'string' ? default_text : obj.text; + this.set_text(obj, ""); + obj = this._open_to(obj); + tmp.text = default_text; + + rtl = this._data.core.rtl; + w = this.element.width(); + this._data.core.focused = tmp.id; + a = obj.children('.jstree-anchor').focus(); + s = $(''); + /*! + oi = obj.children("i:visible"), + ai = a.children("i:visible"), + w1 = oi.width() * oi.length, + w2 = ai.width() * ai.length, + */ + t = default_text; + h1 = $("<"+"div />", { css : { "position" : "absolute", "top" : "-200px", "left" : (rtl ? "0px" : "-1000px"), "visibility" : "hidden" } }).appendTo("body"); + h2 = $("<"+"input />", { + "value" : t, + "class" : "jstree-rename-input", + // "size" : t.length, + "css" : { + "padding" : "0", + "border" : "1px solid silver", + "box-sizing" : "border-box", + "display" : "inline-block", + "height" : (this._data.core.li_height) + "px", + "lineHeight" : (this._data.core.li_height) + "px", + "width" : "150px" // will be set a bit further down + }, + "blur" : $.proxy(function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + var i = s.children(".jstree-rename-input"), + v = i.val(), + f = this.settings.core.force_text, + nv; + if(v === "") { v = t; } + h1.remove(); + s.replaceWith(a); + s.remove(); + t = f ? t : $('
          ').append($.parseHTML(t)).html(); + this.set_text(obj, t); + nv = !!this.rename_node(obj, f ? $('
          ').text(v).text() : $('
          ').append($.parseHTML(v)).html()); + if(!nv) { + this.set_text(obj, t); // move this up? and fix #483 + } + this._data.core.focused = tmp.id; + setTimeout($.proxy(function () { + var node = this.get_node(tmp.id, true); + if(node.length) { + this._data.core.focused = tmp.id; + node.children('.jstree-anchor').focus(); + } + }, this), 0); + if(callback) { + callback.call(this, tmp, nv, cancel); + } + h2 = null; + }, this), + "keydown" : function (e) { + var key = e.which; + if(key === 27) { + cancel = true; + this.value = t; + } + if(key === 27 || key === 13 || key === 37 || key === 38 || key === 39 || key === 40 || key === 32) { + e.stopImmediatePropagation(); + } + if(key === 27 || key === 13) { + e.preventDefault(); + this.blur(); + } + }, + "click" : function (e) { e.stopImmediatePropagation(); }, + "mousedown" : function (e) { e.stopImmediatePropagation(); }, + "keyup" : function (e) { + h2.width(Math.min(h1.text("pW" + this.value).width(),w)); + }, + "keypress" : function(e) { + if(e.which === 13) { return false; } + } + }); + fn = { + fontFamily : a.css('fontFamily') || '', + fontSize : a.css('fontSize') || '', + fontWeight : a.css('fontWeight') || '', + fontStyle : a.css('fontStyle') || '', + fontStretch : a.css('fontStretch') || '', + fontVariant : a.css('fontVariant') || '', + letterSpacing : a.css('letterSpacing') || '', + wordSpacing : a.css('wordSpacing') || '' + }; + s.attr('class', a.attr('class')).append(a.contents().clone()).append(h2); + a.replaceWith(s); + h1.css(fn); + h2.css(fn).width(Math.min(h1.text("pW" + h2[0].value).width(),w))[0].select(); + $(document).one('mousedown.jstree touchstart.jstree dnd_start.vakata', function (e) { + if (h2 && e.target !== h2) { + $(h2).blur(); + } + }); + }, + + + /** + * changes the theme + * @name set_theme(theme_name [, theme_url]) + * @param {String} theme_name the name of the new theme to apply + * @param {mixed} theme_url the location of the CSS file for this theme. Omit or set to `false` if you manually included the file. Set to `true` to autoload from the `core.themes.dir` directory. + * @trigger set_theme.jstree + */ + set_theme : function (theme_name, theme_url) { + if(!theme_name) { return false; } + if(theme_url === true) { + var dir = this.settings.core.themes.dir; + if(!dir) { dir = $.jstree.path + '/themes'; } + theme_url = dir + '/' + theme_name + '/style.css'; + } + if(theme_url && $.inArray(theme_url, themes_loaded) === -1) { + $('head').append('<'+'link rel="stylesheet" href="' + theme_url + '" type="text/css" />'); + themes_loaded.push(theme_url); + } + if(this._data.core.themes.name) { + this.element.removeClass('jstree-' + this._data.core.themes.name); + } + this._data.core.themes.name = theme_name; + this.element.addClass('jstree-' + theme_name); + this.element[this.settings.core.themes.responsive ? 'addClass' : 'removeClass' ]('jstree-' + theme_name + '-responsive'); + /** + * triggered when a theme is set + * @event + * @name set_theme.jstree + * @param {String} theme the new theme + */ + this.trigger('set_theme', { 'theme' : theme_name }); + }, + /** + * gets the name of the currently applied theme name + * @name get_theme() + * @return {String} + */ + get_theme : function () { return this._data.core.themes.name; }, + /** + * changes the theme variant (if the theme has variants) + * @name set_theme_variant(variant_name) + * @param {String|Boolean} variant_name the variant to apply (if `false` is used the current variant is removed) + */ + set_theme_variant : function (variant_name) { + if(this._data.core.themes.variant) { + this.element.removeClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant); + } + this._data.core.themes.variant = variant_name; + if(variant_name) { + this.element.addClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant); + } + }, + /** + * gets the name of the currently applied theme variant + * @name get_theme() + * @return {String} + */ + get_theme_variant : function () { return this._data.core.themes.variant; }, + /** + * shows a striped background on the container (if the theme supports it) + * @name show_stripes() + */ + show_stripes : function () { + this._data.core.themes.stripes = true; + this.get_container_ul().addClass("jstree-striped"); + /** + * triggered when stripes are shown + * @event + * @name show_stripes.jstree + */ + this.trigger('show_stripes'); + }, + /** + * hides the striped background on the container + * @name hide_stripes() + */ + hide_stripes : function () { + this._data.core.themes.stripes = false; + this.get_container_ul().removeClass("jstree-striped"); + /** + * triggered when stripes are hidden + * @event + * @name hide_stripes.jstree + */ + this.trigger('hide_stripes'); + }, + /** + * toggles the striped background on the container + * @name toggle_stripes() + */ + toggle_stripes : function () { if(this._data.core.themes.stripes) { this.hide_stripes(); } else { this.show_stripes(); } }, + /** + * shows the connecting dots (if the theme supports it) + * @name show_dots() + */ + show_dots : function () { + this._data.core.themes.dots = true; + this.get_container_ul().removeClass("jstree-no-dots"); + /** + * triggered when dots are shown + * @event + * @name show_dots.jstree + */ + this.trigger('show_dots'); + }, + /** + * hides the connecting dots + * @name hide_dots() + */ + hide_dots : function () { + this._data.core.themes.dots = false; + this.get_container_ul().addClass("jstree-no-dots"); + /** + * triggered when dots are hidden + * @event + * @name hide_dots.jstree + */ + this.trigger('hide_dots'); + }, + /** + * toggles the connecting dots + * @name toggle_dots() + */ + toggle_dots : function () { if(this._data.core.themes.dots) { this.hide_dots(); } else { this.show_dots(); } }, + /** + * show the node icons + * @name show_icons() + */ + show_icons : function () { + this._data.core.themes.icons = true; + this.get_container_ul().removeClass("jstree-no-icons"); + /** + * triggered when icons are shown + * @event + * @name show_icons.jstree + */ + this.trigger('show_icons'); + }, + /** + * hide the node icons + * @name hide_icons() + */ + hide_icons : function () { + this._data.core.themes.icons = false; + this.get_container_ul().addClass("jstree-no-icons"); + /** + * triggered when icons are hidden + * @event + * @name hide_icons.jstree + */ + this.trigger('hide_icons'); + }, + /** + * toggle the node icons + * @name toggle_icons() + */ + toggle_icons : function () { if(this._data.core.themes.icons) { this.hide_icons(); } else { this.show_icons(); } }, + /** + * show the node ellipsis + * @name show_icons() + */ + show_ellipsis : function () { + this._data.core.themes.ellipsis = true; + this.get_container_ul().addClass("jstree-ellipsis"); + /** + * triggered when ellisis is shown + * @event + * @name show_ellipsis.jstree + */ + this.trigger('show_ellipsis'); + }, + /** + * hide the node ellipsis + * @name hide_ellipsis() + */ + hide_ellipsis : function () { + this._data.core.themes.ellipsis = false; + this.get_container_ul().removeClass("jstree-ellipsis"); + /** + * triggered when ellisis is hidden + * @event + * @name hide_ellipsis.jstree + */ + this.trigger('hide_ellipsis'); + }, + /** + * toggle the node ellipsis + * @name toggle_icons() + */ + toggle_ellipsis : function () { if(this._data.core.themes.ellipsis) { this.hide_ellipsis(); } else { this.show_ellipsis(); } }, + /** + * set the node icon for a node + * @name set_icon(obj, icon) + * @param {mixed} obj + * @param {String} icon the new icon - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class + */ + set_icon : function (obj, icon) { + var t1, t2, dom, old; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.set_icon(obj[t1], icon); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { return false; } + old = obj.icon; + obj.icon = icon === true || icon === null || icon === undefined || icon === '' ? true : icon; + dom = this.get_node(obj, true).children(".jstree-anchor").children(".jstree-themeicon"); + if(icon === false) { + this.hide_icon(obj); + } + else if(icon === true || icon === null || icon === undefined || icon === '') { + dom.removeClass('jstree-themeicon-custom ' + old).css("background","").removeAttr("rel"); + if(old === false) { this.show_icon(obj); } + } + else if(icon.indexOf("/") === -1 && icon.indexOf(".") === -1) { + dom.removeClass(old).css("background",""); + dom.addClass(icon + ' jstree-themeicon-custom').attr("rel",icon); + if(old === false) { this.show_icon(obj); } + } + else { + dom.removeClass(old).css("background",""); + dom.addClass('jstree-themeicon-custom').css("background", "url('" + icon + "') center center no-repeat").attr("rel",icon); + if(old === false) { this.show_icon(obj); } + } + return true; + }, + /** + * get the node icon for a node + * @name get_icon(obj) + * @param {mixed} obj + * @return {String} + */ + get_icon : function (obj) { + obj = this.get_node(obj); + return (!obj || obj.id === $.jstree.root) ? false : obj.icon; + }, + /** + * hide the icon on an individual node + * @name hide_icon(obj) + * @param {mixed} obj + */ + hide_icon : function (obj) { + var t1, t2; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.hide_icon(obj[t1]); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj === $.jstree.root) { return false; } + obj.icon = false; + this.get_node(obj, true).children(".jstree-anchor").children(".jstree-themeicon").addClass('jstree-themeicon-hidden'); + return true; + }, + /** + * show the icon on an individual node + * @name show_icon(obj) + * @param {mixed} obj + */ + show_icon : function (obj) { + var t1, t2, dom; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.show_icon(obj[t1]); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj === $.jstree.root) { return false; } + dom = this.get_node(obj, true); + obj.icon = dom.length ? dom.children(".jstree-anchor").children(".jstree-themeicon").attr('rel') : true; + if(!obj.icon) { obj.icon = true; } + dom.children(".jstree-anchor").children(".jstree-themeicon").removeClass('jstree-themeicon-hidden'); + return true; + } + }; + + // helpers + $.vakata = {}; + // collect attributes + $.vakata.attributes = function(node, with_values) { + node = $(node)[0]; + var attr = with_values ? {} : []; + if(node && node.attributes) { + $.each(node.attributes, function (i, v) { + if($.inArray(v.name.toLowerCase(),['style','contenteditable','hasfocus','tabindex']) !== -1) { return; } + if(v.value !== null && $.trim(v.value) !== '') { + if(with_values) { attr[v.name] = v.value; } + else { attr.push(v.name); } + } + }); + } + return attr; + }; + $.vakata.array_unique = function(array) { + var a = [], i, j, l, o = {}; + for(i = 0, l = array.length; i < l; i++) { + if(o[array[i]] === undefined) { + a.push(array[i]); + o[array[i]] = true; + } + } + return a; + }; + // remove item from array + $.vakata.array_remove = function(array, from) { + array.splice(from, 1); + return array; + //var rest = array.slice((to || from) + 1 || array.length); + //array.length = from < 0 ? array.length + from : from; + //array.push.apply(array, rest); + //return array; + }; + // remove item from array + $.vakata.array_remove_item = function(array, item) { + var tmp = $.inArray(item, array); + return tmp !== -1 ? $.vakata.array_remove(array, tmp) : array; + }; + $.vakata.array_filter = function(c,a,b,d,e) { + if (c.filter) { + return c.filter(a, b); + } + d=[]; + for (e in c) { + if (~~e+''===e+'' && e>=0 && a.call(b,c[e],+e,c)) { + d.push(c[e]); + } + } + return d; + }; +})); diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.massload.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.massload.js new file mode 100644 index 0000000000..d202a3eca5 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.massload.js @@ -0,0 +1,137 @@ +/** + * ### Massload plugin + * + * Adds massload functionality to jsTree, so that multiple nodes can be loaded in a single request (only useful with lazy loading). + */ +/*globals jQuery, define, exports, require, document */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.massload', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.massload) { return; } + + /** + * massload configuration + * + * It is possible to set this to a standard jQuery-like AJAX config. + * In addition to the standard jQuery ajax options here you can supply functions for `data` and `url`, the functions will be run in the current instance's scope and a param will be passed indicating which node IDs need to be loaded, the return value of those functions will be used. + * + * You can also set this to a function, that function will receive the node IDs being loaded as argument and a second param which is a function (callback) which should be called with the result. + * + * Both the AJAX and the function approach rely on the same return value - an object where the keys are the node IDs, and the value is the children of that node as an array. + * + * { + * "id1" : [{ "text" : "Child of ID1", "id" : "c1" }, { "text" : "Another child of ID1", "id" : "c2" }], + * "id2" : [{ "text" : "Child of ID2", "id" : "c3" }] + * } + * + * @name $.jstree.defaults.massload + * @plugin massload + */ + $.jstree.defaults.massload = null; + $.jstree.plugins.massload = function (options, parent) { + this.init = function (el, options) { + this._data.massload = {}; + parent.init.call(this, el, options); + }; + this._load_nodes = function (nodes, callback, is_callback, force_reload) { + var s = this.settings.massload, + nodesString = JSON.stringify(nodes), + toLoad = [], + m = this._model.data, + i, j, dom; + if (!is_callback) { + for(i = 0, j = nodes.length; i < j; i++) { + if(!m[nodes[i]] || ( (!m[nodes[i]].state.loaded && !m[nodes[i]].state.failed) || force_reload) ) { + toLoad.push(nodes[i]); + dom = this.get_node(nodes[i], true); + if (dom && dom.length) { + dom.addClass("jstree-loading").attr('aria-busy',true); + } + } + } + this._data.massload = {}; + if (toLoad.length) { + if($.isFunction(s)) { + return s.call(this, toLoad, $.proxy(function (data) { + var i, j; + if(data) { + for(i in data) { + if(data.hasOwnProperty(i)) { + this._data.massload[i] = data[i]; + } + } + } + for(i = 0, j = nodes.length; i < j; i++) { + dom = this.get_node(nodes[i], true); + if (dom && dom.length) { + dom.removeClass("jstree-loading").attr('aria-busy',false); + } + } + parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); + }, this)); + } + if(typeof s === 'object' && s && s.url) { + s = $.extend(true, {}, s); + if($.isFunction(s.url)) { + s.url = s.url.call(this, toLoad); + } + if($.isFunction(s.data)) { + s.data = s.data.call(this, toLoad); + } + return $.ajax(s) + .done($.proxy(function (data,t,x) { + var i, j; + if(data) { + for(i in data) { + if(data.hasOwnProperty(i)) { + this._data.massload[i] = data[i]; + } + } + } + for(i = 0, j = nodes.length; i < j; i++) { + dom = this.get_node(nodes[i], true); + if (dom && dom.length) { + dom.removeClass("jstree-loading").attr('aria-busy',false); + } + } + parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); + }, this)) + .fail($.proxy(function (f) { + parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); + }, this)); + } + } + } + return parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); + }; + this._load_node = function (obj, callback) { + var data = this._data.massload[obj.id], + rslt = null, dom; + if(data) { + rslt = this[typeof data === 'string' ? '_append_html_data' : '_append_json_data']( + obj, + typeof data === 'string' ? $($.parseHTML(data)).filter(function () { return this.nodeType !== 3; }) : data, + function (status) { callback.call(this, status); } + ); + dom = this.get_node(obj.id, true); + if (dom && dom.length) { + dom.removeClass("jstree-loading").attr('aria-busy',false); + } + delete this._data.massload[obj.id]; + return rslt; + } + return parent._load_node.call(this, obj, callback); + }; + }; +})); \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.search.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.search.js new file mode 100644 index 0000000000..21c3e7923a --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.search.js @@ -0,0 +1,421 @@ +/** + * ### Search plugin + * + * Adds search functionality to jsTree. + */ +/*globals jQuery, define, exports, require, document */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.search', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.search) { return; } + + /** + * stores all defaults for the search plugin + * @name $.jstree.defaults.search + * @plugin search + */ + $.jstree.defaults.search = { + /** + * a jQuery-like AJAX config, which jstree uses if a server should be queried for results. + * + * A `str` (which is the search string) parameter will be added with the request, an optional `inside` parameter will be added if the search is limited to a node id. The expected result is a JSON array with nodes that need to be opened so that matching nodes will be revealed. + * Leave this setting as `false` to not query the server. You can also set this to a function, which will be invoked in the instance's scope and receive 3 parameters - the search string, the callback to call with the array of nodes to load, and the optional node ID to limit the search to + * @name $.jstree.defaults.search.ajax + * @plugin search + */ + ajax : false, + /** + * Indicates if the search should be fuzzy or not (should `chnd3` match `child node 3`). Default is `false`. + * @name $.jstree.defaults.search.fuzzy + * @plugin search + */ + fuzzy : false, + /** + * Indicates if the search should be case sensitive. Default is `false`. + * @name $.jstree.defaults.search.case_sensitive + * @plugin search + */ + case_sensitive : false, + /** + * Indicates if the tree should be filtered (by default) to show only matching nodes (keep in mind this can be a heavy on large trees in old browsers). + * This setting can be changed at runtime when calling the search method. Default is `false`. + * @name $.jstree.defaults.search.show_only_matches + * @plugin search + */ + show_only_matches : false, + /** + * Indicates if the children of matched element are shown (when show_only_matches is true) + * This setting can be changed at runtime when calling the search method. Default is `false`. + * @name $.jstree.defaults.search.show_only_matches_children + * @plugin search + */ + show_only_matches_children : false, + /** + * Indicates if all nodes opened to reveal the search result, should be closed when the search is cleared or a new search is performed. Default is `true`. + * @name $.jstree.defaults.search.close_opened_onclear + * @plugin search + */ + close_opened_onclear : true, + /** + * Indicates if only leaf nodes should be included in search results. Default is `false`. + * @name $.jstree.defaults.search.search_leaves_only + * @plugin search + */ + search_leaves_only : false, + /** + * If set to a function it wil be called in the instance's scope with two arguments - search string and node (where node will be every node in the structure, so use with caution). + * If the function returns a truthy value the node will be considered a match (it might not be displayed if search_only_leaves is set to true and the node is not a leaf). Default is `false`. + * @name $.jstree.defaults.search.search_callback + * @plugin search + */ + search_callback : false + }; + + $.jstree.plugins.search = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + + this._data.search.str = ""; + this._data.search.dom = $(); + this._data.search.res = []; + this._data.search.opn = []; + this._data.search.som = false; + this._data.search.smc = false; + this._data.search.hdn = []; + + this.element + .on("search.jstree", $.proxy(function (e, data) { + if(this._data.search.som && data.res.length) { + var m = this._model.data, i, j, p = [], k, l; + for(i = 0, j = data.res.length; i < j; i++) { + if(m[data.res[i]] && !m[data.res[i]].state.hidden) { + p.push(data.res[i]); + p = p.concat(m[data.res[i]].parents); + if(this._data.search.smc) { + for (k = 0, l = m[data.res[i]].children_d.length; k < l; k++) { + if (m[m[data.res[i]].children_d[k]] && !m[m[data.res[i]].children_d[k]].state.hidden) { + p.push(m[data.res[i]].children_d[k]); + } + } + } + } + } + p = $.vakata.array_remove_item($.vakata.array_unique(p), $.jstree.root); + this._data.search.hdn = this.hide_all(true); + this.show_node(p, true); + this.redraw(true); + } + }, this)) + .on("clear_search.jstree", $.proxy(function (e, data) { + if(this._data.search.som && data.res.length) { + this.show_node(this._data.search.hdn, true); + this.redraw(true); + } + }, this)); + }; + /** + * used to search the tree nodes for a given string + * @name search(str [, skip_async]) + * @param {String} str the search string + * @param {Boolean} skip_async if set to true server will not be queried even if configured + * @param {Boolean} show_only_matches if set to true only matching nodes will be shown (keep in mind this can be very slow on large trees or old browsers) + * @param {mixed} inside an optional node to whose children to limit the search + * @param {Boolean} append if set to true the results of this search are appended to the previous search + * @plugin search + * @trigger search.jstree + */ + this.search = function (str, skip_async, show_only_matches, inside, append, show_only_matches_children) { + if(str === false || $.trim(str.toString()) === "") { + return this.clear_search(); + } + inside = this.get_node(inside); + inside = inside && inside.id ? inside.id : null; + str = str.toString(); + var s = this.settings.search, + a = s.ajax ? s.ajax : false, + m = this._model.data, + f = null, + r = [], + p = [], i, j; + if(this._data.search.res.length && !append) { + this.clear_search(); + } + if(show_only_matches === undefined) { + show_only_matches = s.show_only_matches; + } + if(show_only_matches_children === undefined) { + show_only_matches_children = s.show_only_matches_children; + } + if(!skip_async && a !== false) { + if($.isFunction(a)) { + return a.call(this, str, $.proxy(function (d) { + if(d && d.d) { d = d.d; } + this._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () { + this.search(str, true, show_only_matches, inside, append, show_only_matches_children); + }); + }, this), inside); + } + else { + a = $.extend({}, a); + if(!a.data) { a.data = {}; } + a.data.str = str; + if(inside) { + a.data.inside = inside; + } + if (this._data.search.lastRequest) { + this._data.search.lastRequest.abort(); + } + this._data.search.lastRequest = $.ajax(a) + .fail($.proxy(function () { + this._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'search', 'id' : 'search_01', 'reason' : 'Could not load search parents', 'data' : JSON.stringify(a) }; + this.settings.core.error.call(this, this._data.core.last_error); + }, this)) + .done($.proxy(function (d) { + if(d && d.d) { d = d.d; } + this._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () { + this.search(str, true, show_only_matches, inside, append, show_only_matches_children); + }); + }, this)); + return this._data.search.lastRequest; + } + } + if(!append) { + this._data.search.str = str; + this._data.search.dom = $(); + this._data.search.res = []; + this._data.search.opn = []; + this._data.search.som = show_only_matches; + this._data.search.smc = show_only_matches_children; + } + + f = new $.vakata.search(str, true, { caseSensitive : s.case_sensitive, fuzzy : s.fuzzy }); + $.each(m[inside ? inside : $.jstree.root].children_d, function (ii, i) { + var v = m[i]; + if(v.text && !v.state.hidden && (!s.search_leaves_only || (v.state.loaded && v.children.length === 0)) && ( (s.search_callback && s.search_callback.call(this, str, v)) || (!s.search_callback && f.search(v.text).isMatch) ) ) { + r.push(i); + p = p.concat(v.parents); + } + }); + if(r.length) { + p = $.vakata.array_unique(p); + for(i = 0, j = p.length; i < j; i++) { + if(p[i] !== $.jstree.root && m[p[i]] && this.open_node(p[i], null, 0) === true) { + this._data.search.opn.push(p[i]); + } + } + if(!append) { + this._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); }).join(', #'))); + this._data.search.res = r; + } + else { + this._data.search.dom = this._data.search.dom.add($(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); }).join(', #')))); + this._data.search.res = $.vakata.array_unique(this._data.search.res.concat(r)); + } + this._data.search.dom.children(".jstree-anchor").addClass('jstree-search'); + } + /** + * triggered after search is complete + * @event + * @name search.jstree + * @param {jQuery} nodes a jQuery collection of matching nodes + * @param {String} str the search string + * @param {Array} res a collection of objects represeing the matching nodes + * @plugin search + */ + this.trigger('search', { nodes : this._data.search.dom, str : str, res : this._data.search.res, show_only_matches : show_only_matches }); + }; + /** + * used to clear the last search (removes classes and shows all nodes if filtering is on) + * @name clear_search() + * @plugin search + * @trigger clear_search.jstree + */ + this.clear_search = function () { + if(this.settings.search.close_opened_onclear) { + this.close_node(this._data.search.opn, 0); + } + /** + * triggered after search is complete + * @event + * @name clear_search.jstree + * @param {jQuery} nodes a jQuery collection of matching nodes (the result from the last search) + * @param {String} str the search string (the last search string) + * @param {Array} res a collection of objects represeing the matching nodes (the result from the last search) + * @plugin search + */ + this.trigger('clear_search', { 'nodes' : this._data.search.dom, str : this._data.search.str, res : this._data.search.res }); + if(this._data.search.res.length) { + this._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(this._data.search.res, function (v) { + return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); + }).join(', #'))); + this._data.search.dom.children(".jstree-anchor").removeClass("jstree-search"); + } + this._data.search.str = ""; + this._data.search.res = []; + this._data.search.opn = []; + this._data.search.dom = $(); + }; + + this.redraw_node = function(obj, deep, callback, force_render) { + obj = parent.redraw_node.apply(this, arguments); + if(obj) { + if($.inArray(obj.id, this._data.search.res) !== -1) { + var i, j, tmp = null; + for(i = 0, j = obj.childNodes.length; i < j; i++) { + if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { + tmp = obj.childNodes[i]; + break; + } + } + if(tmp) { + tmp.className += ' jstree-search'; + } + } + } + return obj; + }; + }; + + // helpers + (function ($) { + // from http://kiro.me/projects/fuse.html + $.vakata.search = function(pattern, txt, options) { + options = options || {}; + options = $.extend({}, $.vakata.search.defaults, options); + if(options.fuzzy !== false) { + options.fuzzy = true; + } + pattern = options.caseSensitive ? pattern : pattern.toLowerCase(); + var MATCH_LOCATION = options.location, + MATCH_DISTANCE = options.distance, + MATCH_THRESHOLD = options.threshold, + patternLen = pattern.length, + matchmask, pattern_alphabet, match_bitapScore, search; + if(patternLen > 32) { + options.fuzzy = false; + } + if(options.fuzzy) { + matchmask = 1 << (patternLen - 1); + pattern_alphabet = (function () { + var mask = {}, + i = 0; + for (i = 0; i < patternLen; i++) { + mask[pattern.charAt(i)] = 0; + } + for (i = 0; i < patternLen; i++) { + mask[pattern.charAt(i)] |= 1 << (patternLen - i - 1); + } + return mask; + }()); + match_bitapScore = function (e, x) { + var accuracy = e / patternLen, + proximity = Math.abs(MATCH_LOCATION - x); + if(!MATCH_DISTANCE) { + return proximity ? 1.0 : accuracy; + } + return accuracy + (proximity / MATCH_DISTANCE); + }; + } + search = function (text) { + text = options.caseSensitive ? text : text.toLowerCase(); + if(pattern === text || text.indexOf(pattern) !== -1) { + return { + isMatch: true, + score: 0 + }; + } + if(!options.fuzzy) { + return { + isMatch: false, + score: 1 + }; + } + var i, j, + textLen = text.length, + scoreThreshold = MATCH_THRESHOLD, + bestLoc = text.indexOf(pattern, MATCH_LOCATION), + binMin, binMid, + binMax = patternLen + textLen, + lastRd, start, finish, rd, charMatch, + score = 1, + locations = []; + if (bestLoc !== -1) { + scoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold); + bestLoc = text.lastIndexOf(pattern, MATCH_LOCATION + patternLen); + if (bestLoc !== -1) { + scoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold); + } + } + bestLoc = -1; + for (i = 0; i < patternLen; i++) { + binMin = 0; + binMid = binMax; + while (binMin < binMid) { + if (match_bitapScore(i, MATCH_LOCATION + binMid) <= scoreThreshold) { + binMin = binMid; + } else { + binMax = binMid; + } + binMid = Math.floor((binMax - binMin) / 2 + binMin); + } + binMax = binMid; + start = Math.max(1, MATCH_LOCATION - binMid + 1); + finish = Math.min(MATCH_LOCATION + binMid, textLen) + patternLen; + rd = new Array(finish + 2); + rd[finish + 1] = (1 << i) - 1; + for (j = finish; j >= start; j--) { + charMatch = pattern_alphabet[text.charAt(j - 1)]; + if (i === 0) { + rd[j] = ((rd[j + 1] << 1) | 1) & charMatch; + } else { + rd[j] = ((rd[j + 1] << 1) | 1) & charMatch | (((lastRd[j + 1] | lastRd[j]) << 1) | 1) | lastRd[j + 1]; + } + if (rd[j] & matchmask) { + score = match_bitapScore(i, j - 1); + if (score <= scoreThreshold) { + scoreThreshold = score; + bestLoc = j - 1; + locations.push(bestLoc); + if (bestLoc > MATCH_LOCATION) { + start = Math.max(1, 2 * MATCH_LOCATION - bestLoc); + } else { + break; + } + } + } + } + if (match_bitapScore(i + 1, MATCH_LOCATION) > scoreThreshold) { + break; + } + lastRd = rd; + } + return { + isMatch: bestLoc >= 0, + score: score + }; + }; + return txt === true ? { 'search' : search } : search(txt); + }; + $.vakata.search.defaults = { + location : 0, + distance : 100, + threshold : 0.6, + fuzzy : false, + caseSensitive : false + }; + }($)); + + // include the search plugin by default + // $.jstree.defaults.plugins.push("search"); +})); diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.sort.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.sort.js new file mode 100644 index 0000000000..94f8b39014 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.sort.js @@ -0,0 +1,74 @@ +/** + * ### Sort plugin + * + * Automatically sorts all siblings in the tree according to a sorting function. + */ +/*globals jQuery, define, exports, require */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.sort', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.sort) { return; } + + /** + * the settings function used to sort the nodes. + * It is executed in the tree's context, accepts two nodes as arguments and should return `1` or `-1`. + * @name $.jstree.defaults.sort + * @plugin sort + */ + $.jstree.defaults.sort = function (a, b) { + //return this.get_type(a) === this.get_type(b) ? (this.get_text(a) > this.get_text(b) ? 1 : -1) : this.get_type(a) >= this.get_type(b); + return this.get_text(a) > this.get_text(b) ? 1 : -1; + }; + $.jstree.plugins.sort = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + this.element + .on("model.jstree", $.proxy(function (e, data) { + this.sort(data.parent, true); + }, this)) + .on("rename_node.jstree create_node.jstree", $.proxy(function (e, data) { + this.sort(data.parent || data.node.parent, false); + this.redraw_node(data.parent || data.node.parent, true); + }, this)) + .on("move_node.jstree copy_node.jstree", $.proxy(function (e, data) { + this.sort(data.parent, false); + this.redraw_node(data.parent, true); + }, this)); + }; + /** + * used to sort a node's children + * @private + * @name sort(obj [, deep]) + * @param {mixed} obj the node + * @param {Boolean} deep if set to `true` nodes are sorted recursively. + * @plugin sort + * @trigger search.jstree + */ + this.sort = function (obj, deep) { + var i, j; + obj = this.get_node(obj); + if(obj && obj.children && obj.children.length) { + obj.children.sort($.proxy(this.settings.sort, this)); + if(deep) { + for(i = 0, j = obj.children_d.length; i < j; i++) { + this.sort(obj.children_d[i], false); + } + } + } + }; + }; + + // include the sort plugin by default + // $.jstree.defaults.plugins.push("sort"); +})); \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.state.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.state.js new file mode 100644 index 0000000000..f87cf4fb64 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.state.js @@ -0,0 +1,125 @@ +/** + * ### State plugin + * + * Saves the state of the tree (selected nodes, opened nodes) on the user's computer using available options (localStorage, cookies, etc) + */ +/*globals jQuery, define, exports, require */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.state', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.state) { return; } + + var to = false; + /** + * stores all defaults for the state plugin + * @name $.jstree.defaults.state + * @plugin state + */ + $.jstree.defaults.state = { + /** + * A string for the key to use when saving the current tree (change if using multiple trees in your project). Defaults to `jstree`. + * @name $.jstree.defaults.state.key + * @plugin state + */ + key : 'jstree', + /** + * A space separated list of events that trigger a state save. Defaults to `changed.jstree open_node.jstree close_node.jstree`. + * @name $.jstree.defaults.state.events + * @plugin state + */ + events : 'changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree', + /** + * Time in milliseconds after which the state will expire. Defaults to 'false' meaning - no expire. + * @name $.jstree.defaults.state.ttl + * @plugin state + */ + ttl : false, + /** + * A function that will be executed prior to restoring state with one argument - the state object. Can be used to clear unwanted parts of the state. + * @name $.jstree.defaults.state.filter + * @plugin state + */ + filter : false + }; + $.jstree.plugins.state = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + var bind = $.proxy(function () { + this.element.on(this.settings.state.events, $.proxy(function () { + if(to) { clearTimeout(to); } + to = setTimeout($.proxy(function () { this.save_state(); }, this), 100); + }, this)); + /** + * triggered when the state plugin is finished restoring the state (and immediately after ready if there is no state to restore). + * @event + * @name state_ready.jstree + * @plugin state + */ + this.trigger('state_ready'); + }, this); + this.element + .on("ready.jstree", $.proxy(function (e, data) { + this.element.one("restore_state.jstree", bind); + if(!this.restore_state()) { bind(); } + }, this)); + }; + /** + * save the state + * @name save_state() + * @plugin state + */ + this.save_state = function () { + var st = { 'state' : this.get_state(), 'ttl' : this.settings.state.ttl, 'sec' : +(new Date()) }; + $.vakata.storage.set(this.settings.state.key, JSON.stringify(st)); + }; + /** + * restore the state from the user's computer + * @name restore_state() + * @plugin state + */ + this.restore_state = function () { + var k = $.vakata.storage.get(this.settings.state.key); + if(!!k) { try { k = JSON.parse(k); } catch(ex) { return false; } } + if(!!k && k.ttl && k.sec && +(new Date()) - k.sec > k.ttl) { return false; } + if(!!k && k.state) { k = k.state; } + if(!!k && $.isFunction(this.settings.state.filter)) { k = this.settings.state.filter.call(this, k); } + if(!!k) { + this.element.one("set_state.jstree", function (e, data) { data.instance.trigger('restore_state', { 'state' : $.extend(true, {}, k) }); }); + this.set_state(k); + return true; + } + return false; + }; + /** + * clear the state on the user's computer + * @name clear_state() + * @plugin state + */ + this.clear_state = function () { + return $.vakata.storage.del(this.settings.state.key); + }; + }; + + (function ($, undefined) { + $.vakata.storage = { + // simply specifying the functions in FF throws an error + set : function (key, val) { return window.localStorage.setItem(key, val); }, + get : function (key) { return window.localStorage.getItem(key); }, + del : function (key) { return window.localStorage.removeItem(key); } + }; + }($)); + + // include the state plugin by default + // $.jstree.defaults.plugins.push("state"); +})); \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.types.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.types.js new file mode 100644 index 0000000000..706829a9d0 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.types.js @@ -0,0 +1,372 @@ +/** + * ### Types plugin + * + * Makes it possible to add predefined types for groups of nodes, which make it possible to easily control nesting rules and icon for each group. + */ +/*globals jQuery, define, exports, require */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.types', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.types) { return; } + + /** + * An object storing all types as key value pairs, where the key is the type name and the value is an object that could contain following keys (all optional). + * + * * `max_children` the maximum number of immediate children this node type can have. Do not specify or set to `-1` for unlimited. + * * `max_depth` the maximum number of nesting this node type can have. A value of `1` would mean that the node can have children, but no grandchildren. Do not specify or set to `-1` for unlimited. + * * `valid_children` an array of node type strings, that nodes of this type can have as children. Do not specify or set to `-1` for no limits. + * * `icon` a string - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class. Omit to use the default icon from your theme. + * * `li_attr` an object of values which will be used to add HTML attributes on the resulting LI DOM node (merged with the node's own data) + * * `a_attr` an object of values which will be used to add HTML attributes on the resulting A DOM node (merged with the node's own data) + * + * There are two predefined types: + * + * * `#` represents the root of the tree, for example `max_children` would control the maximum number of root nodes. + * * `default` represents the default node - any settings here will be applied to all nodes that do not have a type specified. + * + * @name $.jstree.defaults.types + * @plugin types + */ + $.jstree.defaults.types = { + 'default' : {} + }; + $.jstree.defaults.types[$.jstree.root] = {}; + + $.jstree.plugins.types = function (options, parent) { + this.init = function (el, options) { + var i, j; + if(options && options.types && options.types['default']) { + for(i in options.types) { + if(i !== "default" && i !== $.jstree.root && options.types.hasOwnProperty(i)) { + for(j in options.types['default']) { + if(options.types['default'].hasOwnProperty(j) && options.types[i][j] === undefined) { + options.types[i][j] = options.types['default'][j]; + } + } + } + } + } + parent.init.call(this, el, options); + this._model.data[$.jstree.root].type = $.jstree.root; + }; + this.refresh = function (skip_loading, forget_state) { + parent.refresh.call(this, skip_loading, forget_state); + this._model.data[$.jstree.root].type = $.jstree.root; + }; + this.bind = function () { + this.element + .on('model.jstree', $.proxy(function (e, data) { + var m = this._model.data, + dpc = data.nodes, + t = this.settings.types, + i, j, c = 'default', k; + for(i = 0, j = dpc.length; i < j; i++) { + c = 'default'; + if(m[dpc[i]].original && m[dpc[i]].original.type && t[m[dpc[i]].original.type]) { + c = m[dpc[i]].original.type; + } + if(m[dpc[i]].data && m[dpc[i]].data.jstree && m[dpc[i]].data.jstree.type && t[m[dpc[i]].data.jstree.type]) { + c = m[dpc[i]].data.jstree.type; + } + m[dpc[i]].type = c; + if(m[dpc[i]].icon === true && t[c].icon !== undefined) { + m[dpc[i]].icon = t[c].icon; + } + if(t[c].li_attr !== undefined && typeof t[c].li_attr === 'object') { + for (k in t[c].li_attr) { + if (t[c].li_attr.hasOwnProperty(k)) { + if (k === 'id') { + continue; + } + else if (m[dpc[i]].li_attr[k] === undefined) { + m[dpc[i]].li_attr[k] = t[c].li_attr[k]; + } + else if (k === 'class') { + m[dpc[i]].li_attr['class'] = t[c].li_attr['class'] + ' ' + m[dpc[i]].li_attr['class']; + } + } + } + } + if(t[c].a_attr !== undefined && typeof t[c].a_attr === 'object') { + for (k in t[c].a_attr) { + if (t[c].a_attr.hasOwnProperty(k)) { + if (k === 'id') { + continue; + } + else if (m[dpc[i]].a_attr[k] === undefined) { + m[dpc[i]].a_attr[k] = t[c].a_attr[k]; + } + else if (k === 'href' && m[dpc[i]].a_attr[k] === '#') { + m[dpc[i]].a_attr['href'] = t[c].a_attr['href']; + } + else if (k === 'class') { + m[dpc[i]].a_attr['class'] = t[c].a_attr['class'] + ' ' + m[dpc[i]].a_attr['class']; + } + } + } + } + } + m[$.jstree.root].type = $.jstree.root; + }, this)); + parent.bind.call(this); + }; + this.get_json = function (obj, options, flat) { + var i, j, + m = this._model.data, + opt = options ? $.extend(true, {}, options, {no_id:false}) : {}, + tmp = parent.get_json.call(this, obj, opt, flat); + if(tmp === false) { return false; } + if($.isArray(tmp)) { + for(i = 0, j = tmp.length; i < j; i++) { + tmp[i].type = tmp[i].id && m[tmp[i].id] && m[tmp[i].id].type ? m[tmp[i].id].type : "default"; + if(options && options.no_id) { + delete tmp[i].id; + if(tmp[i].li_attr && tmp[i].li_attr.id) { + delete tmp[i].li_attr.id; + } + if(tmp[i].a_attr && tmp[i].a_attr.id) { + delete tmp[i].a_attr.id; + } + } + } + } + else { + tmp.type = tmp.id && m[tmp.id] && m[tmp.id].type ? m[tmp.id].type : "default"; + if(options && options.no_id) { + tmp = this._delete_ids(tmp); + } + } + return tmp; + }; + this._delete_ids = function (tmp) { + if($.isArray(tmp)) { + for(var i = 0, j = tmp.length; i < j; i++) { + tmp[i] = this._delete_ids(tmp[i]); + } + return tmp; + } + delete tmp.id; + if(tmp.li_attr && tmp.li_attr.id) { + delete tmp.li_attr.id; + } + if(tmp.a_attr && tmp.a_attr.id) { + delete tmp.a_attr.id; + } + if(tmp.children && $.isArray(tmp.children)) { + tmp.children = this._delete_ids(tmp.children); + } + return tmp; + }; + this.check = function (chk, obj, par, pos, more) { + if(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; } + obj = obj && obj.id ? obj : this.get_node(obj); + par = par && par.id ? par : this.get_node(par); + var m = obj && obj.id ? (more && more.origin ? more.origin : $.jstree.reference(obj.id)) : null, tmp, d, i, j; + m = m && m._model && m._model.data ? m._model.data : null; + switch(chk) { + case "create_node": + case "move_node": + case "copy_node": + if(chk !== 'move_node' || $.inArray(obj.id, par.children) === -1) { + tmp = this.get_rules(par); + if(tmp.max_children !== undefined && tmp.max_children !== -1 && tmp.max_children === par.children.length) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_01', 'reason' : 'max_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + return false; + } + if(tmp.valid_children !== undefined && tmp.valid_children !== -1 && $.inArray((obj.type || 'default'), tmp.valid_children) === -1) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_02', 'reason' : 'valid_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + return false; + } + if(m && obj.children_d && obj.parents) { + d = 0; + for(i = 0, j = obj.children_d.length; i < j; i++) { + d = Math.max(d, m[obj.children_d[i]].parents.length); + } + d = d - obj.parents.length + 1; + } + if(d <= 0 || d === undefined) { d = 1; } + do { + if(tmp.max_depth !== undefined && tmp.max_depth !== -1 && tmp.max_depth < d) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_03', 'reason' : 'max_depth prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + return false; + } + par = this.get_node(par.parent); + tmp = this.get_rules(par); + d++; + } while(par); + } + break; + } + return true; + }; + /** + * used to retrieve the type settings object for a node + * @name get_rules(obj) + * @param {mixed} obj the node to find the rules for + * @return {Object} + * @plugin types + */ + this.get_rules = function (obj) { + obj = this.get_node(obj); + if(!obj) { return false; } + var tmp = this.get_type(obj, true); + if(tmp.max_depth === undefined) { tmp.max_depth = -1; } + if(tmp.max_children === undefined) { tmp.max_children = -1; } + if(tmp.valid_children === undefined) { tmp.valid_children = -1; } + return tmp; + }; + /** + * used to retrieve the type string or settings object for a node + * @name get_type(obj [, rules]) + * @param {mixed} obj the node to find the rules for + * @param {Boolean} rules if set to `true` instead of a string the settings object will be returned + * @return {String|Object} + * @plugin types + */ + this.get_type = function (obj, rules) { + obj = this.get_node(obj); + return (!obj) ? false : ( rules ? $.extend({ 'type' : obj.type }, this.settings.types[obj.type]) : obj.type); + }; + /** + * used to change a node's type + * @name set_type(obj, type) + * @param {mixed} obj the node to change + * @param {String} type the new type + * @plugin types + */ + this.set_type = function (obj, type) { + var m = this._model.data, t, t1, t2, old_type, old_icon, k, d, a; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.set_type(obj[t1], type); + } + return true; + } + t = this.settings.types; + obj = this.get_node(obj); + if(!t[type] || !obj) { return false; } + d = this.get_node(obj, true); + if (d && d.length) { + a = d.children('.jstree-anchor'); + } + old_type = obj.type; + old_icon = this.get_icon(obj); + obj.type = type; + if(old_icon === true || !t[old_type] || (t[old_type].icon !== undefined && old_icon === t[old_type].icon)) { + this.set_icon(obj, t[type].icon !== undefined ? t[type].icon : true); + } + + // remove old type props + if(t[old_type] && t[old_type].li_attr !== undefined && typeof t[old_type].li_attr === 'object') { + for (k in t[old_type].li_attr) { + if (t[old_type].li_attr.hasOwnProperty(k)) { + if (k === 'id') { + continue; + } + else if (k === 'class') { + m[obj.id].li_attr['class'] = (m[obj.id].li_attr['class'] || '').replace(t[old_type].li_attr[k], ''); + if (d) { d.removeClass(t[old_type].li_attr[k]); } + } + else if (m[obj.id].li_attr[k] === t[old_type].li_attr[k]) { + m[obj.id].li_attr[k] = null; + if (d) { d.removeAttr(k); } + } + } + } + } + if(t[old_type] && t[old_type].a_attr !== undefined && typeof t[old_type].a_attr === 'object') { + for (k in t[old_type].a_attr) { + if (t[old_type].a_attr.hasOwnProperty(k)) { + if (k === 'id') { + continue; + } + else if (k === 'class') { + m[obj.id].a_attr['class'] = (m[obj.id].a_attr['class'] || '').replace(t[old_type].a_attr[k], ''); + if (a) { a.removeClass(t[old_type].a_attr[k]); } + } + else if (m[obj.id].a_attr[k] === t[old_type].a_attr[k]) { + if (k === 'href') { + m[obj.id].a_attr[k] = '#'; + if (a) { a.attr('href', '#'); } + } + else { + delete m[obj.id].a_attr[k]; + if (a) { a.removeAttr(k); } + } + } + } + } + } + + // add new props + if(t[type].li_attr !== undefined && typeof t[type].li_attr === 'object') { + for (k in t[type].li_attr) { + if (t[type].li_attr.hasOwnProperty(k)) { + if (k === 'id') { + continue; + } + else if (m[obj.id].li_attr[k] === undefined) { + m[obj.id].li_attr[k] = t[type].li_attr[k]; + if (d) { + if (k === 'class') { + d.addClass(t[type].li_attr[k]); + } + else { + d.attr(k, t[type].li_attr[k]); + } + } + } + else if (k === 'class') { + m[obj.id].li_attr['class'] = t[type].li_attr[k] + ' ' + m[obj.id].li_attr['class']; + if (d) { d.addClass(t[type].li_attr[k]); } + } + } + } + } + if(t[type].a_attr !== undefined && typeof t[type].a_attr === 'object') { + for (k in t[type].a_attr) { + if (t[type].a_attr.hasOwnProperty(k)) { + if (k === 'id') { + continue; + } + else if (m[obj.id].a_attr[k] === undefined) { + m[obj.id].a_attr[k] = t[type].a_attr[k]; + if (a) { + if (k === 'class') { + a.addClass(t[type].a_attr[k]); + } + else { + a.attr(k, t[type].a_attr[k]); + } + } + } + else if (k === 'href' && m[obj.id].a_attr[k] === '#') { + m[obj.id].a_attr['href'] = t[type].a_attr['href']; + if (a) { a.attr('href', t[type].a_attr['href']); } + } + else if (k === 'class') { + m[obj.id].a_attr['class'] = t[type].a_attr['class'] + ' ' + m[obj.id].a_attr['class']; + if (a) { a.addClass(t[type].a_attr[k]); } + } + } + } + } + + return true; + }; + }; + // include the types plugin by default + // $.jstree.defaults.plugins.push("types"); +})); diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.unique.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.unique.js new file mode 100644 index 0000000000..bfe2f1b8f8 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.unique.js @@ -0,0 +1,121 @@ +/** + * ### Unique plugin + * + * Enforces that no nodes with the same name can coexist as siblings. + */ +/*globals jQuery, define, exports, require */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.unique', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.unique) { return; } + + /** + * stores all defaults for the unique plugin + * @name $.jstree.defaults.unique + * @plugin unique + */ + $.jstree.defaults.unique = { + /** + * Indicates if the comparison should be case sensitive. Default is `false`. + * @name $.jstree.defaults.unique.case_sensitive + * @plugin unique + */ + case_sensitive : false, + /** + * A callback executed in the instance's scope when a new node is created and the name is already taken, the two arguments are the conflicting name and the counter. The default will produce results like `New node (2)`. + * @name $.jstree.defaults.unique.duplicate + * @plugin unique + */ + duplicate : function (name, counter) { + return name + ' (' + counter + ')'; + } + }; + + $.jstree.plugins.unique = function (options, parent) { + this.check = function (chk, obj, par, pos, more) { + if(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; } + obj = obj && obj.id ? obj : this.get_node(obj); + par = par && par.id ? par : this.get_node(par); + if(!par || !par.children) { return true; } + var n = chk === "rename_node" ? pos : obj.text, + c = [], + s = this.settings.unique.case_sensitive, + m = this._model.data, i, j; + for(i = 0, j = par.children.length; i < j; i++) { + c.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase()); + } + if(!s) { n = n.toLowerCase(); } + switch(chk) { + case "delete_node": + return true; + case "rename_node": + i = ($.inArray(n, c) === -1 || (obj.text && obj.text[ s ? 'toString' : 'toLowerCase']() === n)); + if(!i) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_01', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + } + return i; + case "create_node": + i = ($.inArray(n, c) === -1); + if(!i) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_04', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + } + return i; + case "copy_node": + i = ($.inArray(n, c) === -1); + if(!i) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_02', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + } + return i; + case "move_node": + i = ( (obj.parent === par.id && (!more || !more.is_multi)) || $.inArray(n, c) === -1); + if(!i) { + this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_03', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; + } + return i; + } + return true; + }; + this.create_node = function (par, node, pos, callback, is_loaded) { + if(!node || node.text === undefined) { + if(par === null) { + par = $.jstree.root; + } + par = this.get_node(par); + if(!par) { + return parent.create_node.call(this, par, node, pos, callback, is_loaded); + } + pos = pos === undefined ? "last" : pos; + if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { + return parent.create_node.call(this, par, node, pos, callback, is_loaded); + } + if(!node) { node = {}; } + var tmp, n, dpc, i, j, m = this._model.data, s = this.settings.unique.case_sensitive, cb = this.settings.unique.duplicate; + n = tmp = this.get_string('New node'); + dpc = []; + for(i = 0, j = par.children.length; i < j; i++) { + dpc.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase()); + } + i = 1; + while($.inArray(s ? n : n.toLowerCase(), dpc) !== -1) { + n = cb.call(this, tmp, (++i)).toString(); + } + node.text = n; + } + return parent.create_node.call(this, par, node, pos, callback, is_loaded); + }; + }; + + // include the unique plugin by default + // $.jstree.defaults.plugins.push("unique"); +})); diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.wholerow.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.wholerow.js new file mode 100644 index 0000000000..e8fe3e6d54 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/jstree.wholerow.js @@ -0,0 +1,122 @@ +/** + * ### Wholerow plugin + * + * Makes each node appear block level. Making selection easier. May cause slow down for large trees in old browsers. + */ +/*globals jQuery, define, exports, require */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.wholerow', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.wholerow) { return; } + + var div = document.createElement('DIV'); + div.setAttribute('unselectable','on'); + div.setAttribute('role','presentation'); + div.className = 'jstree-wholerow'; + div.innerHTML = ' '; + $.jstree.plugins.wholerow = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + + this.element + .on('ready.jstree set_state.jstree', $.proxy(function () { + this.hide_dots(); + }, this)) + .on("init.jstree loading.jstree ready.jstree", $.proxy(function () { + //div.style.height = this._data.core.li_height + 'px'; + this.get_container_ul().addClass('jstree-wholerow-ul'); + }, this)) + .on("deselect_all.jstree", $.proxy(function (e, data) { + this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked'); + }, this)) + .on("changed.jstree", $.proxy(function (e, data) { + this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked'); + var tmp = false, i, j; + for(i = 0, j = data.selected.length; i < j; i++) { + tmp = this.get_node(data.selected[i], true); + if(tmp && tmp.length) { + tmp.children('.jstree-wholerow').addClass('jstree-wholerow-clicked'); + } + } + }, this)) + .on("open_node.jstree", $.proxy(function (e, data) { + this.get_node(data.node, true).find('.jstree-clicked').parent().children('.jstree-wholerow').addClass('jstree-wholerow-clicked'); + }, this)) + .on("hover_node.jstree dehover_node.jstree", $.proxy(function (e, data) { + if(e.type === "hover_node" && this.is_disabled(data.node)) { return; } + this.get_node(data.node, true).children('.jstree-wholerow')[e.type === "hover_node"?"addClass":"removeClass"]('jstree-wholerow-hovered'); + }, this)) + .on("contextmenu.jstree", ".jstree-wholerow", $.proxy(function (e) { + if (this._data.contextmenu) { + e.preventDefault(); + var tmp = $.Event('contextmenu', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey, pageX : e.pageX, pageY : e.pageY }); + $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp); + } + }, this)) + /*! + .on("mousedown.jstree touchstart.jstree", ".jstree-wholerow", function (e) { + if(e.target === e.currentTarget) { + var a = $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor"); + e.target = a[0]; + a.trigger(e); + } + }) + */ + .on("click.jstree", ".jstree-wholerow", function (e) { + e.stopImmediatePropagation(); + var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); + $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); + }) + .on("dblclick.jstree", ".jstree-wholerow", function (e) { + e.stopImmediatePropagation(); + var tmp = $.Event('dblclick', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); + $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); + }) + .on("click.jstree", ".jstree-leaf > .jstree-ocl", $.proxy(function (e) { + e.stopImmediatePropagation(); + var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); + $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); + }, this)) + .on("mouseover.jstree", ".jstree-wholerow, .jstree-icon", $.proxy(function (e) { + e.stopImmediatePropagation(); + if(!this.is_disabled(e.currentTarget)) { + this.hover_node(e.currentTarget); + } + return false; + }, this)) + .on("mouseleave.jstree", ".jstree-node", $.proxy(function (e) { + this.dehover_node(e.currentTarget); + }, this)); + }; + this.teardown = function () { + if(this.settings.wholerow) { + this.element.find(".jstree-wholerow").remove(); + } + parent.teardown.call(this); + }; + this.redraw_node = function(obj, deep, callback, force_render) { + obj = parent.redraw_node.apply(this, arguments); + if(obj) { + var tmp = div.cloneNode(true); + //tmp.style.height = this._data.core.li_height + 'px'; + if($.inArray(obj.id, this._data.core.selected) !== -1) { tmp.className += ' jstree-wholerow-clicked'; } + if(this._data.core.focused && this._data.core.focused === obj.id) { tmp.className += ' jstree-wholerow-hovered'; } + obj.insertBefore(tmp, obj.childNodes[0]); + } + return obj; + }; + }; + // include the wholerow plugin by default + // $.jstree.defaults.plugins.push("wholerow"); +})); diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/misc.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/misc.js new file mode 100644 index 0000000000..d2d789b1f3 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/misc.js @@ -0,0 +1,601 @@ +/* global jQuery */ + +// disable all events +(function ($, undefined) { + "use strict"; + $.jstree.plugins.trigger = function (options, parent) { + this.init = function (el, options) { + // do not forget parent + parent.init.call(this, el, options); + this._data.trigger.disabled = false; + }; + this.trigger = function (ev, data) { + if(!this._data.trigger.disabled) { + parent.trigger.call(this, ev, data); + } + }; + this.disable_events = function () { this._data.trigger.disabled = true; }; + this.enable_events = function () { this._data.trigger.disabled = false; }; + }; +})(jQuery); + +// mapping +(function ($, undefined) { + "use strict"; + // use this if you need any options + $.jstree.defaults.mapper = { + option_key : "option_value" + }; + $.jstree.plugins.mapper = function () { + this._parse_model_from_json = function (d, p, ps) { + // d is the node from the server, it will be called recursively for children, + // so you do not need to process at once + /* // for example + for(var i in d) { + if(d.hasOwnProperty(i)) { + d[i.toLowerCase()] = d[i]; + } + } + */ + return parent._parse_model_from_json.call(this, d, p, ps); + }; + }; +})(jQuery); + +// no hover +(function ($, undefined) { + "use strict"; + $.jstree.plugins.nohover = function () { + this.hover_node = $.noop; + }; +})(jQuery); + +// force multiple select +(function ($, undefined) { + "use strict"; + $.jstree.defaults.multiselect = {}; + $.jstree.plugins.multiselect = function (options, parent) { + this.activate_node = function (obj, e) { + e.ctrlKey = true; + parent.activate_node.call(this, obj, e); + }; + }; +})(jQuery); + +// real checkboxes +(function ($, undefined) { + "use strict"; + + var inp = document.createElement("INPUT"); + inp.type = "checkbox"; + inp.className = "jstree-checkbox jstree-realcheckbox"; + + $.jstree.defaults.realcheckboxes = {}; + + $.jstree.plugins.realcheckboxes = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + this._data.realcheckboxes.uto = false; + this.element + .on('changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree ready.jstree loaded.jstree', $.proxy(function () { + // only if undetermined is in setting + if(this._data.realcheckboxes.uto) { clearTimeout(this._data.realcheckboxes.uto); } + this._data.realcheckboxes.uto = setTimeout($.proxy(this._realcheckboxes, this), 50); + }, this)); + }; + this.redraw_node = function(obj, deep, callback, force_draw) { + obj = parent.redraw_node.call(this, obj, deep, callback, force_draw); + if(obj) { + var i, j, tmp = null, chk = inp.cloneNode(true); + for(i = 0, j = obj.childNodes.length; i < j; i++) { + if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { + tmp = obj.childNodes[i]; + break; + } + } + if(tmp) { + for(i = 0, j = tmp.childNodes.length; i < j; i++) { + if(tmp.childNodes[i] && tmp.childNodes[i].className && tmp.childNodes[i].className.indexOf("jstree-checkbox") !== -1) { + tmp = tmp.childNodes[i]; + break; + } + } + } + if(tmp && tmp.tagName === "I") { + tmp.style.backgroundColor = "transparent"; + tmp.style.backgroundImage = "none"; + tmp.appendChild(chk); + } + } + return obj; + }; + this._realcheckboxes = function () { + var ts = this.settings.checkbox.tie_selection; + console.log(ts); + $('.jstree-realcheckbox').each(function () { + this.checked = (!ts && this.parentNode.parentNode.className.indexOf("jstree-checked") !== -1) || (ts && this.parentNode.parentNode.className.indexOf('jstree-clicked') !== -1); + this.indeterminate = this.parentNode.className.indexOf("jstree-undetermined") !== -1; + this.disabled = this.parentNode.parentNode.className.indexOf("disabled") !== -1; + }); + }; + }; +})(jQuery); + +// no state +(function ($, undefined) { + "use strict"; + $.jstree.plugins.nostate = function () { + this.set_state = function (state, callback) { + if(callback) { callback.call(this); } + this.trigger('set_state'); + }; + }; +})(jQuery); + +// no selected in state +(function ($, undefined) { + "use strict"; + $.jstree.plugins.noselectedstate = function (options, parent) { + this.get_state = function () { + var state = parent.get_state.call(this); + delete state.core.selected; + return state; + }; + }; +})(jQuery); + +// additional icon on node (outside of anchor) +(function ($, undefined) { + "use strict"; + var img = document.createElement('IMG'); + //img.src = "http://www.dpcd.vic.gov.au/__data/assets/image/0004/30667/help.gif"; + img.className = "jstree-questionmark"; + + $.jstree.defaults.questionmark = $.noop; + $.jstree.plugins.questionmark = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + this.element + .on("click.jstree", ".jstree-questionmark", $.proxy(function (e) { + e.stopImmediatePropagation(); + this.settings.questionmark.call(this, this.get_node(e.target)); + }, this)); + }; + this.teardown = function () { + if(this.settings.questionmark) { + this.element.find(".jstree-questionmark").remove(); + } + parent.teardown.call(this); + }; + this.redraw_node = function(obj, deep, callback, force_draw) { + obj = parent.redraw_node.call(this, obj, deep, callback, force_draw); + if(obj) { + var tmp = img.cloneNode(true); + obj.insertBefore(tmp, obj.childNodes[2]); + } + return obj; + }; + }; +})(jQuery); + +// auto numbering +(function ($, undefined) { + "use strict"; + var span = document.createElement('SPAN'); + span.className = "jstree-numbering"; + + $.jstree.defaults.numbering = {}; + $.jstree.plugins.numbering = function (options, parent) { + this.teardown = function () { + if(this.settings.questionmark) { + this.element.find(".jstree-numbering").remove(); + } + parent.teardown.call(this); + }; + this.get_number = function (obj) { + obj = this.get_node(obj); + var ind = $.inArray(obj.id, this.get_node(obj.parent).children) + 1; + return obj.parent === '#' ? ind : this.get_number(obj.parent) + '.' + ind; + }; + this.redraw_node = function(obj, deep, callback, force_draw) { + var i, j, tmp = null, elm = null, org = this.get_number(obj); + obj = parent.redraw_node.call(this, obj, deep, callback, force_draw); + if(obj) { + for(i = 0, j = obj.childNodes.length; i < j; i++) { + if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { + tmp = obj.childNodes[i]; + break; + } + } + if(tmp) { + elm = span.cloneNode(true); + elm.innerHTML = org + '. '; + tmp.insertBefore(elm, tmp.childNodes[tmp.childNodes.length - 1]); + } + } + return obj; + }; + }; +})(jQuery); + +// additional icon on node (inside anchor) +(function ($, undefined) { + "use strict"; + var _s = document.createElement('SPAN'); + _s.className = 'fa-stack jstree-stackedicon'; + var _i = document.createElement('I'); + _i.className = 'jstree-icon'; + _i.setAttribute('role', 'presentation'); + + $.jstree.plugins.stackedicon = function (options, parent) { + this.teardown = function () { + this.element.find(".jstree-stackedicon").remove(); + parent.teardown.call(this); + }; + this.redraw_node = function(obj, deep, is_callback, force_render) { + obj = parent.redraw_node.apply(this, arguments); + if(obj) { + var i, j, tmp = null, icon = null, temp = null; + for(i = 0, j = obj.childNodes.length; i < j; i++) { + if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { + tmp = obj.childNodes[i]; + break; + } + } + if(tmp) { + if(this._model.data[obj.id].state.icons && this._model.data[obj.id].state.icons.length) { + icon = _s.cloneNode(false); + for(i = 0, j = this._model.data[obj.id].state.icons.length; i < j; i++) { + temp = _i.cloneNode(false); + temp.className += ' ' + this._model.data[obj.id].state.icons[i]; + icon.appendChild(temp); + } + tmp.insertBefore(icon, tmp.childNodes[0]); + } + } + } + return obj; + }; + }; +})(jQuery); + +// selecting a node opens it +(function ($, undefined) { + "use strict"; + $.jstree.plugins.selectopens = function (options, parent) { + this.bind = function () { + parent.bind.call(this); + this.element.on('select_node.jstree', function (e, data) { data.instance.open_node(data.node); }); + }; + }; +})(jQuery); + +// object as data +(function ($, undefined) { + "use strict"; + $.jstree.defaults.datamodel = {}; + $.jstree.plugins.datamodel = function (options, parent) { + this.init = function (el, options) { + this._data.datamodel = {}; + parent.init.call(this, el, options); + }; + this._datamodel = function (id, nodes, callback) { + var i = 0, j = nodes.length, tmp = [], obj = null; + for(; i < j; i++) { + this._data.datamodel[nodes[i].getID()] = nodes[i]; + obj = { + id : nodes[i].getID(), + text : nodes[i].getText(), + children : nodes[i].hasChildren() + }; + if(nodes[i].getExtra) { + obj = nodes[i].getExtra(obj); // icon, type + } + tmp.push(obj); + } + return this._append_json_data(id, tmp, $.proxy(function (status) { + callback.call(this, status); + }, this)); + }; + this._load_node = function (obj, callback) { + var id = obj.id; + var nd = obj.id === "#" ? this.settings.core.data : this._data.datamodel[obj.id].getChildren($.proxy(function (nodes) { + this._datamodel(id, nodes, callback); + }, this)); + if($.isArray(nd)) { + this._datamodel(id, nd, callback); + } + }; + }; +})(jQuery); +/* + demo of the above + function treeNode(val) { + var id = ++treeNode.counter; + this.getID = function () { + return id; + }; + this.getText = function () { + return val.toString(); + }; + this.getExtra = function (obj) { + obj.icon = false; + return obj; + }; + this.hasChildren = function () { + return true; + }; + this.getChildren = function () { + return [ + new treeNode(Math.pow(val, 2)), + new treeNode(Math.sqrt(val)), + ]; + }; + } + treeNode.counter = 0; + + $('#jstree').jstree({ + 'core': { + 'data': [ + new treeNode(2), + new treeNode(3), + new treeNode(4), + new treeNode(5) + ] + }, + plugins : ['datamodel'] + }); +*/ + +// untested sample plugin to keep all nodes in the DOM +(function ($, undefined) { + "use strict"; + $.jstree.plugins.dom = function (options, parent) { + this.redraw_node = function (node, deep, is_callback, force_render) { + return parent.redraw_node.call(this, node, deep, is_callback, true); + }; + this.close_node = function (obj, animation) { + var t1, t2, t, d; + if($.isArray(obj)) { + obj = obj.slice(); + for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { + this.close_node(obj[t1], animation); + } + return true; + } + obj = this.get_node(obj); + if(!obj || obj.id === $.jstree.root) { + return false; + } + if(this.is_closed(obj)) { + return false; + } + animation = animation === undefined ? this.settings.core.animation : animation; + t = this; + d = this.get_node(obj, true); + if(d.length) { + if(!animation) { + d[0].className = d[0].className.replace('jstree-open', 'jstree-closed'); + d.attr("aria-expanded", false); + } + else { + d + .children(".jstree-children").attr("style","display:block !important").end() + .removeClass("jstree-open").addClass("jstree-closed").attr("aria-expanded", false) + .children(".jstree-children").stop(true, true).slideUp(animation, function () { + this.style.display = ""; + t.trigger("after_close", { "node" : obj }); + }); + } + } + obj.state.opened = false; + this.trigger('close_node',{ "node" : obj }); + if(!animation || !d.length) { + this.trigger("after_close", { "node" : obj }); + } + }; + }; +})(jQuery); + +// customize plugin by @Lusito +// https://github.com/Lusito/jstree/blob/node-customize/src/jstree-node-customize.js +/** + * ### Node Customize plugin + * + * Allows to customize nodes when they are drawn. + */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.node_customize', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.node_customize) { return; } + + /** + * the settings object. + * key is the attribute name to select the customizer function from switch. + * switch is a key => function(el, node) map. + * default: function(el, node) will be called if the type could not be mapped + * @name $.jstree.defaults.node_customize + * @plugin node_customize + */ + $.jstree.defaults.node_customize = { + "key": "type", + "switch": {}, + "default": null + }; + + $.jstree.plugins.node_customize = function (options, parent) { + this.redraw_node = function (obj, deep, callback, force_draw) { + var node_id = obj; + var el = parent.redraw_node.apply(this, arguments); + if (el) { + var node = this._model.data[node_id]; + var cfg = this.settings.node_customize; + var key = cfg.key; + var type = (node && node.original && node.original[key]); + var customizer = (type && cfg.switch[type]) || cfg.default; + if(customizer) + customizer(el, node); + } + return el; + }; + } +})); + + +// parentsload plugin by @ashl1 +/** + * ### Parentsload plugin + * + * Change load_node() functionality in jsTree, to possible load not yes downloaded node with all it parent in a single request (only useful with lazy loading). + * + * version 1.0.0 (Alexey Shildyakov - ashl1future@gmail.com) + * 2015: Compatible with jsTree-3.2.1 + */ +/*globals jQuery, define, exports, require, document */ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.parentsload', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery, jQuery.jstree); + } +}(function ($, jstree, undefined) { + "use strict"; + + if($.jstree.plugins.parentsload) { return; } + + /** + * parentsload configuration + * + * The configuration syntax is almost the same as for core.data option. You must set parenstload.data the following: + * + * parentsload: { + * data: function(){} // this function overwrites core data.data options + * } + * + * OR + * + * parentsload: { + * data: { + * url: function(node){} OR string, + * data: function(node){} OR associative array as json{data} jQuery parameter + * } + * } + * + * In last case at least on of 'url' or 'data' must be presented. + * + * At first, the plugin load_node() detects if the node already downloaded. If is - uses the core.data settings, if not - uses parentsload.data settings + * to fetch in one query the specified node and all its parent. The data must be in the first mentioned JSON format with set nested children[]. + * Each node level should consist of all nodes on the level to properly work with the tree in the future. Otherwise, you must manually call load_node + * on every parent node to fetch all children nodes on that level. + * + * @name $.jstree.defaults.parentsload + * @plugin parentsload + */ + $.jstree.defaults.parentsload = null; + $.jstree.plugins.parentsload = function (options, parent) { + this.init = function (el, options) { + parent.init.call(this, el, options); + this.patch_data() + }; + this.patch_data = function(){ + var parentsloadSettings = this.settings.parentsload; + var jsTreeDataSettings = this.settings.core.data; + var self = this; + + var callError = function(number, message) { + self._data.core.last_error = { 'error' : 'configuration', 'plugin' : 'parentsload', 'id' : 'parentsload_' + number, 'reason' : message, 'data' : JSON.stringify({config: parentsloadSettings}) }; + self.settings.core.error.call(self, self._data.core.last_error); + } + + if(!parentsloadSettings) { + callError('01', 'The configuration must be presented') + return + } + parentsloadSettings = parentsloadSettings.data; + + var patchSettingsProperty = function (propertyName) { + var property = parentsloadSettings[propertyName], + coreProperty = jsTreeDataSettings[propertyName]; + if (property) { + jsTreeDataSettings[propertyName] = function(node) { + if (this.get_node(node).parentsload_required) { + if ($.isFunction(property)) { + return property.call(this, node) + } else {// (typeof property === 'string') + return property + } + } else { + if ($.isFunction(coreProperty)) { + return coreProperty.call(this, node) + } else { // (typeof coreProperty === 'string') + return coreProperty + } + } + } + } /* else { + use jstree the same data[propertyName] settings + }*/ + } + + if($.isFunction(parentsloadSettings)) { + this.settings.data = parentsloadSettings + } else if (typeof parentsloadSettings === 'object') { + if (! (parentsloadSettings.url || parentsloadSettings.data)) { + callError('02', 'The "data.url" or "data.data" must be presented in configuration') + return + } + patchSettingsProperty('url') + patchSettingsProperty('data') + + } else { + callError('03', 'The appropriate "data.url" or "data.data" must be presented in configuration') + } + } + + this.load_node = function (obj, callback) { + if($.isArray(obj)) { + // FIXME: _load_nodes will not load nodes not presented in the tree + this._load_nodes(obj.slice(), callback); + return true; + } + var foundObj = this.get_node(obj); + if (foundObj) { + return parent.load_node.apply(this, arguments) + } else { + // node hasn't been loaded + var id = obj.id? obj.id: obj; + this._model.data[id] = { + id : id, + parent : '#', + parents : [], + children : [], + children_d : [], + state : { loaded : false }, + li_attr : {}, + a_attr : {}, + parentsload_required : true, + }; + return parent.load_node.call(this, obj, function(obj, status){ + obj.parentsload_required = !status + callback.call(this, obj, status) + }) + } + } + }; +})); diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/outro.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/outro.js new file mode 100644 index 0000000000..57d3e4820a --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/outro.js @@ -0,0 +1 @@ +})); \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/sample.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/sample.js new file mode 100644 index 0000000000..2811e75ca0 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/sample.js @@ -0,0 +1,93 @@ +/*global jQuery */ +// wrap in IIFE and pass jQuery as $ +(function ($, undefined) { + "use strict"; + + // some private plugin stuff if needed + var private_var = null; + + // extending the defaults + $.jstree.defaults.sample = { + sample_option : 'sample_val' + }; + + // the actual plugin code + $.jstree.plugins.sample = function (options, parent) { + // own function + this.sample_function = function (arg) { + // you can chain this method if needed and available + if(parent.sample_function) { parent.sample_function.call(this, arg); } + }; + + // *SPECIAL* FUNCTIONS + this.init = function (el, options) { + // do not forget parent + parent.init.call(this, el, options); + }; + // bind events if needed + this.bind = function () { + // call parent function first + parent.bind.call(this); + // do(stuff); + }; + // unbind events if needed (all in jquery namespace are taken care of by the core) + this.unbind = function () { + // do(stuff); + // call parent function last + parent.unbind.call(this); + }; + this.teardown = function () { + // do not forget parent + parent.teardown.call(this); + }; + // state management - get and restore + this.get_state = function () { + // always get state from parent first + var state = parent.get_state.call(this); + // add own stuff to state + state.sample = { 'var' : 'val' }; + return state; + }; + this.set_state = function (state, callback) { + // only process your part if parent returns true + // there will be multiple times with false + if(parent.set_state.call(this, state, callback)) { + // check the key you set above + if(state.sample) { + // do(stuff); // like calling this.sample_function(state.sample.var); + // remove your part of the state, call again and RETURN FALSE, the next cycle will be TRUE + delete state.sample; + this.set_state(state, callback); + return false; + } + // return true if your state is gone (cleared in the previous step) + return true; + } + // parent was false - return false too + return false; + }; + // node transportation + this.get_json = function (obj, options, flat) { + // get the node from the parent + var tmp = parent.get_json.call(this, obj, options, flat), i, j; + if($.isArray(tmp)) { + for(i = 0, j = tmp.length; i < j; i++) { + tmp[i].sample = 'value'; + } + } + else { + tmp.sample = 'value'; + } + // return the original / modified node + return tmp; + }; + }; + + // attach to document ready if needed + $(function () { + // do(stuff); + }); + + // you can include the sample plugin in all instances by default + $.jstree.defaults.plugins.push("sample"); +})(jQuery); \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/base.less b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/base.less new file mode 100644 index 0000000000..097e9997a8 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/base.less @@ -0,0 +1,88 @@ +// base jstree +.jstree-node, .jstree-children, .jstree-container-ul { display:block; margin:0; padding:0; list-style-type:none; list-style-image:none; } +.jstree-node { white-space:nowrap; } +.jstree-anchor { display:inline-block; color:black; white-space:nowrap; padding:0 4px 0 1px; margin:0; vertical-align:top; } +.jstree-anchor:focus { outline:0; } +.jstree-anchor, .jstree-anchor:link, .jstree-anchor:visited, .jstree-anchor:hover, .jstree-anchor:active { text-decoration:none; color:inherit; } +.jstree-icon { display:inline-block; text-decoration:none; margin:0; padding:0; vertical-align:top; text-align:center; } +.jstree-icon:empty { display:inline-block; text-decoration:none; margin:0; padding:0; vertical-align:top; text-align:center; } +.jstree-ocl { cursor:pointer; } +.jstree-leaf > .jstree-ocl { cursor:default; } +.jstree .jstree-open > .jstree-children { display:block; } +.jstree .jstree-closed > .jstree-children, +.jstree .jstree-leaf > .jstree-children { display:none; } +.jstree-anchor > .jstree-themeicon { margin-right:2px; } +.jstree-no-icons .jstree-themeicon, +.jstree-anchor > .jstree-themeicon-hidden { display:none; } +.jstree-hidden, .jstree-node.jstree-hidden { display:none; } + +// base jstree rtl +.jstree-rtl { + .jstree-anchor { padding:0 1px 0 4px; } + .jstree-anchor > .jstree-themeicon { margin-left:2px; margin-right:0; } + .jstree-node { margin-left:0; } + .jstree-container-ul > .jstree-node { margin-right:0; } +} + +// base jstree wholerow +.jstree-wholerow-ul { + position:relative; + display:inline-block; + min-width:100%; + .jstree-leaf > .jstree-ocl { cursor:pointer; } + .jstree-anchor, .jstree-icon { position:relative; } + .jstree-wholerow { width:100%; cursor:pointer; position:absolute; left:0; -webkit-user-select:none; -moz-user-select:none; -ms-user-select:none; user-select:none; } +} + +// base contextmenu +.vakata-context { + display:none; + &, ul { margin:0; padding:2px; position:absolute; background:#f5f5f5; border:1px solid #979797; box-shadow:2px 2px 2px #999999; } + ul { list-style:none; left:100%; margin-top:-2.7em; margin-left:-4px; } + .vakata-context-right ul { left:auto; right:100%; margin-left:auto; margin-right:-4px; } + li { + list-style:none; + > a { + display:block; padding:0 2em 0 2em; text-decoration:none; width:auto; color:black; white-space:nowrap; line-height:2.4em; text-shadow:1px 1px 0 white; border-radius:1px; + &:hover { position:relative; background-color:#e8eff7; box-shadow:0 0 2px #0a6aa1; } + &.vakata-context-parent { background-image:url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw=="); background-position:right center; background-repeat:no-repeat; } + } + > a:focus { outline:0; } + } + .vakata-context-hover > a { position:relative; background-color:#e8eff7; box-shadow:0 0 2px #0a6aa1; } + .vakata-context-separator { + > a, > a:hover { background:white; border:0; border-top:1px solid #e2e3e3; height:1px; min-height:1px; max-height:1px; padding:0; margin:0 0 0 2.4em; border-left:1px solid #e0e0e0; text-shadow:0 0 0 transparent; box-shadow:0 0 0 transparent; border-radius:0; } + } + .vakata-contextmenu-disabled { + a, a:hover { color:silver; background-color:transparent; border:0; box-shadow:0 0 0; } + } + li > a { + > i { text-decoration:none; display:inline-block; width:2.4em; height:2.4em; background:transparent; margin:0 0 0 -2em; vertical-align:top; text-align:center; line-height:2.4em; } + > i:empty { width:2.4em; line-height:2.4em; } + .vakata-contextmenu-sep { display:inline-block; width:1px; height:2.4em; background:white; margin:0 0.5em 0 0; border-left:1px solid #e2e3e3; } + } + .vakata-contextmenu-shortcut { font-size:0.8em; color:silver; opacity:0.5; display:none; } +} +.vakata-context-rtl { + ul { left:auto; right:100%; margin-left:auto; margin-right:-4px; } + li > a.vakata-context-parent { background-image:url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7"); background-position:left center; background-repeat:no-repeat; } + .vakata-context-separator > a { margin:0 2.4em 0 0; border-left:0; border-right:1px solid #e2e3e3;} + .vakata-context-left ul { right:auto; left:100%; margin-left:-4px; margin-right:auto; } + li > a { + > i { margin:0 -2em 0 0; } + .vakata-contextmenu-sep { margin:0 0 0 0.5em; border-left-color:white; background:#e2e3e3; } + } +} + +// base drag'n'drop +#jstree-marker { position: absolute; top:0; left:0; margin:-5px 0 0 0; padding:0; border-right:0; border-top:5px solid transparent; border-bottom:5px solid transparent; border-left:5px solid; width:0; height:0; font-size:0; line-height:0; } +#jstree-dnd { + line-height:16px; + margin:0; + padding:4px; + .jstree-icon, + .jstree-copy { display:inline-block; text-decoration:none; margin:0 2px 0 0; padding:0; width:16px; height:16px; } + .jstree-ok { background:green; } + .jstree-er { background:red; } + .jstree-copy { margin:0 2px 0 2px; } +} diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/32px.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/32px.png new file mode 100644 index 0000000000..60395729ef Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/32px.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/40px.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/40px.png new file mode 100644 index 0000000000..002af360d0 Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/40px.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/style.css b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/style.css new file mode 100644 index 0000000000..3af003f2d5 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/style.css @@ -0,0 +1,1146 @@ +/* jsTree default dark theme */ +.jstree-node, +.jstree-children, +.jstree-container-ul { + display: block; + margin: 0; + padding: 0; + list-style-type: none; + list-style-image: none; +} +.jstree-node { + white-space: nowrap; +} +.jstree-anchor { + display: inline-block; + color: black; + white-space: nowrap; + padding: 0 4px 0 1px; + margin: 0; + vertical-align: top; +} +.jstree-anchor:focus { + outline: 0; +} +.jstree-anchor, +.jstree-anchor:link, +.jstree-anchor:visited, +.jstree-anchor:hover, +.jstree-anchor:active { + text-decoration: none; + color: inherit; +} +.jstree-icon { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0; + vertical-align: top; + text-align: center; +} +.jstree-icon:empty { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0; + vertical-align: top; + text-align: center; +} +.jstree-ocl { + cursor: pointer; +} +.jstree-leaf > .jstree-ocl { + cursor: default; +} +.jstree .jstree-open > .jstree-children { + display: block; +} +.jstree .jstree-closed > .jstree-children, +.jstree .jstree-leaf > .jstree-children { + display: none; +} +.jstree-anchor > .jstree-themeicon { + margin-right: 2px; +} +.jstree-no-icons .jstree-themeicon, +.jstree-anchor > .jstree-themeicon-hidden { + display: none; +} +.jstree-hidden, +.jstree-node.jstree-hidden { + display: none; +} +.jstree-rtl .jstree-anchor { + padding: 0 1px 0 4px; +} +.jstree-rtl .jstree-anchor > .jstree-themeicon { + margin-left: 2px; + margin-right: 0; +} +.jstree-rtl .jstree-node { + margin-left: 0; +} +.jstree-rtl .jstree-container-ul > .jstree-node { + margin-right: 0; +} +.jstree-wholerow-ul { + position: relative; + display: inline-block; + min-width: 100%; +} +.jstree-wholerow-ul .jstree-leaf > .jstree-ocl { + cursor: pointer; +} +.jstree-wholerow-ul .jstree-anchor, +.jstree-wholerow-ul .jstree-icon { + position: relative; +} +.jstree-wholerow-ul .jstree-wholerow { + width: 100%; + cursor: pointer; + position: absolute; + left: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.vakata-context { + display: none; +} +.vakata-context, +.vakata-context ul { + margin: 0; + padding: 2px; + position: absolute; + background: #f5f5f5; + border: 1px solid #979797; + box-shadow: 2px 2px 2px #999999; +} +.vakata-context ul { + list-style: none; + left: 100%; + margin-top: -2.7em; + margin-left: -4px; +} +.vakata-context .vakata-context-right ul { + left: auto; + right: 100%; + margin-left: auto; + margin-right: -4px; +} +.vakata-context li { + list-style: none; +} +.vakata-context li > a { + display: block; + padding: 0 2em 0 2em; + text-decoration: none; + width: auto; + color: black; + white-space: nowrap; + line-height: 2.4em; + text-shadow: 1px 1px 0 white; + border-radius: 1px; +} +.vakata-context li > a:hover { + position: relative; + background-color: #e8eff7; + box-shadow: 0 0 2px #0a6aa1; +} +.vakata-context li > a.vakata-context-parent { + background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw=="); + background-position: right center; + background-repeat: no-repeat; +} +.vakata-context li > a:focus { + outline: 0; +} +.vakata-context .vakata-context-hover > a { + position: relative; + background-color: #e8eff7; + box-shadow: 0 0 2px #0a6aa1; +} +.vakata-context .vakata-context-separator > a, +.vakata-context .vakata-context-separator > a:hover { + background: white; + border: 0; + border-top: 1px solid #e2e3e3; + height: 1px; + min-height: 1px; + max-height: 1px; + padding: 0; + margin: 0 0 0 2.4em; + border-left: 1px solid #e0e0e0; + text-shadow: 0 0 0 transparent; + box-shadow: 0 0 0 transparent; + border-radius: 0; +} +.vakata-context .vakata-contextmenu-disabled a, +.vakata-context .vakata-contextmenu-disabled a:hover { + color: silver; + background-color: transparent; + border: 0; + box-shadow: 0 0 0; +} +.vakata-context li > a > i { + text-decoration: none; + display: inline-block; + width: 2.4em; + height: 2.4em; + background: transparent; + margin: 0 0 0 -2em; + vertical-align: top; + text-align: center; + line-height: 2.4em; +} +.vakata-context li > a > i:empty { + width: 2.4em; + line-height: 2.4em; +} +.vakata-context li > a .vakata-contextmenu-sep { + display: inline-block; + width: 1px; + height: 2.4em; + background: white; + margin: 0 0.5em 0 0; + border-left: 1px solid #e2e3e3; +} +.vakata-context .vakata-contextmenu-shortcut { + font-size: 0.8em; + color: silver; + opacity: 0.5; + display: none; +} +.vakata-context-rtl ul { + left: auto; + right: 100%; + margin-left: auto; + margin-right: -4px; +} +.vakata-context-rtl li > a.vakata-context-parent { + background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7"); + background-position: left center; + background-repeat: no-repeat; +} +.vakata-context-rtl .vakata-context-separator > a { + margin: 0 2.4em 0 0; + border-left: 0; + border-right: 1px solid #e2e3e3; +} +.vakata-context-rtl .vakata-context-left ul { + right: auto; + left: 100%; + margin-left: -4px; + margin-right: auto; +} +.vakata-context-rtl li > a > i { + margin: 0 -2em 0 0; +} +.vakata-context-rtl li > a .vakata-contextmenu-sep { + margin: 0 0 0 0.5em; + border-left-color: white; + background: #e2e3e3; +} +#jstree-marker { + position: absolute; + top: 0; + left: 0; + margin: -5px 0 0 0; + padding: 0; + border-right: 0; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid; + width: 0; + height: 0; + font-size: 0; + line-height: 0; +} +#jstree-dnd { + line-height: 16px; + margin: 0; + padding: 4px; +} +#jstree-dnd .jstree-icon, +#jstree-dnd .jstree-copy { + display: inline-block; + text-decoration: none; + margin: 0 2px 0 0; + padding: 0; + width: 16px; + height: 16px; +} +#jstree-dnd .jstree-ok { + background: green; +} +#jstree-dnd .jstree-er { + background: red; +} +#jstree-dnd .jstree-copy { + margin: 0 2px 0 2px; +} +.jstree-default-dark .jstree-node, +.jstree-default-dark .jstree-icon { + background-repeat: no-repeat; + background-color: transparent; +} +.jstree-default-dark .jstree-anchor, +.jstree-default-dark .jstree-animated, +.jstree-default-dark .jstree-wholerow { + transition: background-color 0.15s, box-shadow 0.15s; +} +.jstree-default-dark .jstree-hovered { + background: #555555; + border-radius: 2px; + box-shadow: inset 0 0 1px #555555; +} +.jstree-default-dark .jstree-context { + background: #555555; + border-radius: 2px; + box-shadow: inset 0 0 1px #555555; +} +.jstree-default-dark .jstree-clicked { + background: #5fa2db; + border-radius: 2px; + box-shadow: inset 0 0 1px #666666; +} +.jstree-default-dark .jstree-no-icons .jstree-anchor > .jstree-themeicon { + display: none; +} +.jstree-default-dark .jstree-disabled { + background: transparent; + color: #666666; +} +.jstree-default-dark .jstree-disabled.jstree-hovered { + background: transparent; + box-shadow: none; +} +.jstree-default-dark .jstree-disabled.jstree-clicked { + background: #333333; +} +.jstree-default-dark .jstree-disabled > .jstree-icon { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default-dark .jstree-search { + font-style: italic; + color: #ffffff; + font-weight: bold; +} +.jstree-default-dark .jstree-no-checkboxes .jstree-checkbox { + display: none !important; +} +.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked { + background: transparent; + box-shadow: none; +} +.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered { + background: #555555; +} +.jstree-default-dark.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked { + background: transparent; +} +.jstree-default-dark.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered { + background: #555555; +} +.jstree-default-dark > .jstree-striped { + min-width: 100%; + display: inline-block; + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat; +} +.jstree-default-dark > .jstree-wholerow-ul .jstree-hovered, +.jstree-default-dark > .jstree-wholerow-ul .jstree-clicked { + background: transparent; + box-shadow: none; + border-radius: 0; +} +.jstree-default-dark .jstree-wholerow { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.jstree-default-dark .jstree-wholerow-hovered { + background: #555555; +} +.jstree-default-dark .jstree-wholerow-clicked { + background: #5fa2db; + background: -webkit-linear-gradient(top, #5fa2db 0%, #5fa2db 100%); + background: linear-gradient(to bottom, #5fa2db 0%, #5fa2db 100%); +} +.jstree-default-dark .jstree-node { + min-height: 24px; + line-height: 24px; + margin-left: 24px; + min-width: 24px; +} +.jstree-default-dark .jstree-anchor { + line-height: 24px; + height: 24px; +} +.jstree-default-dark .jstree-icon { + width: 24px; + height: 24px; + line-height: 24px; +} +.jstree-default-dark .jstree-icon:empty { + width: 24px; + height: 24px; + line-height: 24px; +} +.jstree-default-dark.jstree-rtl .jstree-node { + margin-right: 24px; +} +.jstree-default-dark .jstree-wholerow { + height: 24px; +} +.jstree-default-dark .jstree-node, +.jstree-default-dark .jstree-icon { + background-image: url("32px.png"); +} +.jstree-default-dark .jstree-node { + background-position: -292px -4px; + background-repeat: repeat-y; +} +.jstree-default-dark .jstree-last { + background: transparent; +} +.jstree-default-dark .jstree-open > .jstree-ocl { + background-position: -132px -4px; +} +.jstree-default-dark .jstree-closed > .jstree-ocl { + background-position: -100px -4px; +} +.jstree-default-dark .jstree-leaf > .jstree-ocl { + background-position: -68px -4px; +} +.jstree-default-dark .jstree-themeicon { + background-position: -260px -4px; +} +.jstree-default-dark > .jstree-no-dots .jstree-node, +.jstree-default-dark > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-dark > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -36px -4px; +} +.jstree-default-dark > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -4px -4px; +} +.jstree-default-dark .jstree-disabled { + background: transparent; +} +.jstree-default-dark .jstree-disabled.jstree-hovered { + background: transparent; +} +.jstree-default-dark .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default-dark .jstree-checkbox { + background-position: -164px -4px; +} +.jstree-default-dark .jstree-checkbox:hover { + background-position: -164px -36px; +} +.jstree-default-dark.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, +.jstree-default-dark .jstree-checked > .jstree-checkbox { + background-position: -228px -4px; +} +.jstree-default-dark.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, +.jstree-default-dark .jstree-checked > .jstree-checkbox:hover { + background-position: -228px -36px; +} +.jstree-default-dark .jstree-anchor > .jstree-undetermined { + background-position: -196px -4px; +} +.jstree-default-dark .jstree-anchor > .jstree-undetermined:hover { + background-position: -196px -36px; +} +.jstree-default-dark .jstree-checkbox-disabled { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default-dark > .jstree-striped { + background-size: auto 48px; +} +.jstree-default-dark.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); + background-position: 100% 1px; + background-repeat: repeat-y; +} +.jstree-default-dark.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark.jstree-rtl .jstree-open > .jstree-ocl { + background-position: -132px -36px; +} +.jstree-default-dark.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -100px -36px; +} +.jstree-default-dark.jstree-rtl .jstree-leaf > .jstree-ocl { + background-position: -68px -36px; +} +.jstree-default-dark.jstree-rtl > .jstree-no-dots .jstree-node, +.jstree-default-dark.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-dark.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -36px -36px; +} +.jstree-default-dark.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -4px -36px; +} +.jstree-default-dark .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; +} +.jstree-default-dark > .jstree-container-ul .jstree-loading > .jstree-ocl { + background: url("throbber.gif") center center no-repeat; +} +.jstree-default-dark .jstree-file { + background: url("32px.png") -100px -68px no-repeat; +} +.jstree-default-dark .jstree-folder { + background: url("32px.png") -260px -4px no-repeat; +} +.jstree-default-dark > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; +} +#jstree-dnd.jstree-default-dark { + line-height: 24px; + padding: 0 4px; +} +#jstree-dnd.jstree-default-dark .jstree-ok, +#jstree-dnd.jstree-default-dark .jstree-er { + background-image: url("32px.png"); + background-repeat: no-repeat; + background-color: transparent; +} +#jstree-dnd.jstree-default-dark i { + background: transparent; + width: 24px; + height: 24px; + line-height: 24px; +} +#jstree-dnd.jstree-default-dark .jstree-ok { + background-position: -4px -68px; +} +#jstree-dnd.jstree-default-dark .jstree-er { + background-position: -36px -68px; +} +.jstree-default-dark .jstree-ellipsis { + overflow: hidden; +} +.jstree-default-dark .jstree-ellipsis .jstree-anchor { + width: calc(100% - 29px); + text-overflow: ellipsis; + overflow: hidden; +} +.jstree-default-dark .jstree-ellipsis.jstree-no-icons .jstree-anchor { + width: calc(100% - 5px); +} +.jstree-default-dark.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); +} +.jstree-default-dark.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark-small .jstree-node { + min-height: 18px; + line-height: 18px; + margin-left: 18px; + min-width: 18px; +} +.jstree-default-dark-small .jstree-anchor { + line-height: 18px; + height: 18px; +} +.jstree-default-dark-small .jstree-icon { + width: 18px; + height: 18px; + line-height: 18px; +} +.jstree-default-dark-small .jstree-icon:empty { + width: 18px; + height: 18px; + line-height: 18px; +} +.jstree-default-dark-small.jstree-rtl .jstree-node { + margin-right: 18px; +} +.jstree-default-dark-small .jstree-wholerow { + height: 18px; +} +.jstree-default-dark-small .jstree-node, +.jstree-default-dark-small .jstree-icon { + background-image: url("32px.png"); +} +.jstree-default-dark-small .jstree-node { + background-position: -295px -7px; + background-repeat: repeat-y; +} +.jstree-default-dark-small .jstree-last { + background: transparent; +} +.jstree-default-dark-small .jstree-open > .jstree-ocl { + background-position: -135px -7px; +} +.jstree-default-dark-small .jstree-closed > .jstree-ocl { + background-position: -103px -7px; +} +.jstree-default-dark-small .jstree-leaf > .jstree-ocl { + background-position: -71px -7px; +} +.jstree-default-dark-small .jstree-themeicon { + background-position: -263px -7px; +} +.jstree-default-dark-small > .jstree-no-dots .jstree-node, +.jstree-default-dark-small > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-dark-small > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -39px -7px; +} +.jstree-default-dark-small > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -7px -7px; +} +.jstree-default-dark-small .jstree-disabled { + background: transparent; +} +.jstree-default-dark-small .jstree-disabled.jstree-hovered { + background: transparent; +} +.jstree-default-dark-small .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default-dark-small .jstree-checkbox { + background-position: -167px -7px; +} +.jstree-default-dark-small .jstree-checkbox:hover { + background-position: -167px -39px; +} +.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, +.jstree-default-dark-small .jstree-checked > .jstree-checkbox { + background-position: -231px -7px; +} +.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, +.jstree-default-dark-small .jstree-checked > .jstree-checkbox:hover { + background-position: -231px -39px; +} +.jstree-default-dark-small .jstree-anchor > .jstree-undetermined { + background-position: -199px -7px; +} +.jstree-default-dark-small .jstree-anchor > .jstree-undetermined:hover { + background-position: -199px -39px; +} +.jstree-default-dark-small .jstree-checkbox-disabled { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default-dark-small > .jstree-striped { + background-size: auto 36px; +} +.jstree-default-dark-small.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); + background-position: 100% 1px; + background-repeat: repeat-y; +} +.jstree-default-dark-small.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark-small.jstree-rtl .jstree-open > .jstree-ocl { + background-position: -135px -39px; +} +.jstree-default-dark-small.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -103px -39px; +} +.jstree-default-dark-small.jstree-rtl .jstree-leaf > .jstree-ocl { + background-position: -71px -39px; +} +.jstree-default-dark-small.jstree-rtl > .jstree-no-dots .jstree-node, +.jstree-default-dark-small.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-dark-small.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -39px -39px; +} +.jstree-default-dark-small.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -7px -39px; +} +.jstree-default-dark-small .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; +} +.jstree-default-dark-small > .jstree-container-ul .jstree-loading > .jstree-ocl { + background: url("throbber.gif") center center no-repeat; +} +.jstree-default-dark-small .jstree-file { + background: url("32px.png") -103px -71px no-repeat; +} +.jstree-default-dark-small .jstree-folder { + background: url("32px.png") -263px -7px no-repeat; +} +.jstree-default-dark-small > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; +} +#jstree-dnd.jstree-default-dark-small { + line-height: 18px; + padding: 0 4px; +} +#jstree-dnd.jstree-default-dark-small .jstree-ok, +#jstree-dnd.jstree-default-dark-small .jstree-er { + background-image: url("32px.png"); + background-repeat: no-repeat; + background-color: transparent; +} +#jstree-dnd.jstree-default-dark-small i { + background: transparent; + width: 18px; + height: 18px; + line-height: 18px; +} +#jstree-dnd.jstree-default-dark-small .jstree-ok { + background-position: -7px -71px; +} +#jstree-dnd.jstree-default-dark-small .jstree-er { + background-position: -39px -71px; +} +.jstree-default-dark-small .jstree-ellipsis { + overflow: hidden; +} +.jstree-default-dark-small .jstree-ellipsis .jstree-anchor { + width: calc(100% - 23px); + text-overflow: ellipsis; + overflow: hidden; +} +.jstree-default-dark-small .jstree-ellipsis.jstree-no-icons .jstree-anchor { + width: calc(100% - 5px); +} +.jstree-default-dark-small.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); +} +.jstree-default-dark-small.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark-large .jstree-node { + min-height: 32px; + line-height: 32px; + margin-left: 32px; + min-width: 32px; +} +.jstree-default-dark-large .jstree-anchor { + line-height: 32px; + height: 32px; +} +.jstree-default-dark-large .jstree-icon { + width: 32px; + height: 32px; + line-height: 32px; +} +.jstree-default-dark-large .jstree-icon:empty { + width: 32px; + height: 32px; + line-height: 32px; +} +.jstree-default-dark-large.jstree-rtl .jstree-node { + margin-right: 32px; +} +.jstree-default-dark-large .jstree-wholerow { + height: 32px; +} +.jstree-default-dark-large .jstree-node, +.jstree-default-dark-large .jstree-icon { + background-image: url("32px.png"); +} +.jstree-default-dark-large .jstree-node { + background-position: -288px 0px; + background-repeat: repeat-y; +} +.jstree-default-dark-large .jstree-last { + background: transparent; +} +.jstree-default-dark-large .jstree-open > .jstree-ocl { + background-position: -128px 0px; +} +.jstree-default-dark-large .jstree-closed > .jstree-ocl { + background-position: -96px 0px; +} +.jstree-default-dark-large .jstree-leaf > .jstree-ocl { + background-position: -64px 0px; +} +.jstree-default-dark-large .jstree-themeicon { + background-position: -256px 0px; +} +.jstree-default-dark-large > .jstree-no-dots .jstree-node, +.jstree-default-dark-large > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-dark-large > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -32px 0px; +} +.jstree-default-dark-large > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: 0px 0px; +} +.jstree-default-dark-large .jstree-disabled { + background: transparent; +} +.jstree-default-dark-large .jstree-disabled.jstree-hovered { + background: transparent; +} +.jstree-default-dark-large .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default-dark-large .jstree-checkbox { + background-position: -160px 0px; +} +.jstree-default-dark-large .jstree-checkbox:hover { + background-position: -160px -32px; +} +.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, +.jstree-default-dark-large .jstree-checked > .jstree-checkbox { + background-position: -224px 0px; +} +.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, +.jstree-default-dark-large .jstree-checked > .jstree-checkbox:hover { + background-position: -224px -32px; +} +.jstree-default-dark-large .jstree-anchor > .jstree-undetermined { + background-position: -192px 0px; +} +.jstree-default-dark-large .jstree-anchor > .jstree-undetermined:hover { + background-position: -192px -32px; +} +.jstree-default-dark-large .jstree-checkbox-disabled { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default-dark-large > .jstree-striped { + background-size: auto 64px; +} +.jstree-default-dark-large.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); + background-position: 100% 1px; + background-repeat: repeat-y; +} +.jstree-default-dark-large.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark-large.jstree-rtl .jstree-open > .jstree-ocl { + background-position: -128px -32px; +} +.jstree-default-dark-large.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -96px -32px; +} +.jstree-default-dark-large.jstree-rtl .jstree-leaf > .jstree-ocl { + background-position: -64px -32px; +} +.jstree-default-dark-large.jstree-rtl > .jstree-no-dots .jstree-node, +.jstree-default-dark-large.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-dark-large.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -32px -32px; +} +.jstree-default-dark-large.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: 0px -32px; +} +.jstree-default-dark-large .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; +} +.jstree-default-dark-large > .jstree-container-ul .jstree-loading > .jstree-ocl { + background: url("throbber.gif") center center no-repeat; +} +.jstree-default-dark-large .jstree-file { + background: url("32px.png") -96px -64px no-repeat; +} +.jstree-default-dark-large .jstree-folder { + background: url("32px.png") -256px 0px no-repeat; +} +.jstree-default-dark-large > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; +} +#jstree-dnd.jstree-default-dark-large { + line-height: 32px; + padding: 0 4px; +} +#jstree-dnd.jstree-default-dark-large .jstree-ok, +#jstree-dnd.jstree-default-dark-large .jstree-er { + background-image: url("32px.png"); + background-repeat: no-repeat; + background-color: transparent; +} +#jstree-dnd.jstree-default-dark-large i { + background: transparent; + width: 32px; + height: 32px; + line-height: 32px; +} +#jstree-dnd.jstree-default-dark-large .jstree-ok { + background-position: 0px -64px; +} +#jstree-dnd.jstree-default-dark-large .jstree-er { + background-position: -32px -64px; +} +.jstree-default-dark-large .jstree-ellipsis { + overflow: hidden; +} +.jstree-default-dark-large .jstree-ellipsis .jstree-anchor { + width: calc(100% - 37px); + text-overflow: ellipsis; + overflow: hidden; +} +.jstree-default-dark-large .jstree-ellipsis.jstree-no-icons .jstree-anchor { + width: calc(100% - 5px); +} +.jstree-default-dark-large.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); +} +.jstree-default-dark-large.jstree-rtl .jstree-last { + background: transparent; +} +@media (max-width: 768px) { + #jstree-dnd.jstree-dnd-responsive { + line-height: 40px; + font-weight: bold; + font-size: 1.1em; + text-shadow: 1px 1px white; + } + #jstree-dnd.jstree-dnd-responsive > i { + background: transparent; + width: 40px; + height: 40px; + } + #jstree-dnd.jstree-dnd-responsive > .jstree-ok { + background-image: url("40px.png"); + background-position: 0 -200px; + background-size: 120px 240px; + } + #jstree-dnd.jstree-dnd-responsive > .jstree-er { + background-image: url("40px.png"); + background-position: -40px -200px; + background-size: 120px 240px; + } + #jstree-marker.jstree-dnd-responsive { + border-left-width: 10px; + border-top-width: 10px; + border-bottom-width: 10px; + margin-top: -10px; + } +} +@media (max-width: 768px) { + .jstree-default-dark-responsive { + /* + .jstree-open > .jstree-ocl, + .jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; } + */ + } + .jstree-default-dark-responsive .jstree-icon { + background-image: url("40px.png"); + } + .jstree-default-dark-responsive .jstree-node, + .jstree-default-dark-responsive .jstree-leaf > .jstree-ocl { + background: transparent; + } + .jstree-default-dark-responsive .jstree-node { + min-height: 40px; + line-height: 40px; + margin-left: 40px; + min-width: 40px; + white-space: nowrap; + } + .jstree-default-dark-responsive .jstree-anchor { + line-height: 40px; + height: 40px; + } + .jstree-default-dark-responsive .jstree-icon, + .jstree-default-dark-responsive .jstree-icon:empty { + width: 40px; + height: 40px; + line-height: 40px; + } + .jstree-default-dark-responsive > .jstree-container-ul > .jstree-node { + margin-left: 0; + } + .jstree-default-dark-responsive.jstree-rtl .jstree-node { + margin-left: 0; + margin-right: 40px; + background: transparent; + } + .jstree-default-dark-responsive.jstree-rtl .jstree-container-ul > .jstree-node { + margin-right: 0; + } + .jstree-default-dark-responsive .jstree-ocl, + .jstree-default-dark-responsive .jstree-themeicon, + .jstree-default-dark-responsive .jstree-checkbox { + background-size: 120px 240px; + } + .jstree-default-dark-responsive .jstree-leaf > .jstree-ocl, + .jstree-default-dark-responsive.jstree-rtl .jstree-leaf > .jstree-ocl { + background: transparent; + } + .jstree-default-dark-responsive .jstree-open > .jstree-ocl { + background-position: 0 0px !important; + } + .jstree-default-dark-responsive .jstree-closed > .jstree-ocl { + background-position: 0 -40px !important; + } + .jstree-default-dark-responsive.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -40px 0px !important; + } + .jstree-default-dark-responsive .jstree-themeicon { + background-position: -40px -40px; + } + .jstree-default-dark-responsive .jstree-checkbox, + .jstree-default-dark-responsive .jstree-checkbox:hover { + background-position: -40px -80px; + } + .jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, + .jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, + .jstree-default-dark-responsive .jstree-checked > .jstree-checkbox, + .jstree-default-dark-responsive .jstree-checked > .jstree-checkbox:hover { + background-position: 0 -80px; + } + .jstree-default-dark-responsive .jstree-anchor > .jstree-undetermined, + .jstree-default-dark-responsive .jstree-anchor > .jstree-undetermined:hover { + background-position: 0 -120px; + } + .jstree-default-dark-responsive .jstree-anchor { + font-weight: bold; + font-size: 1.1em; + text-shadow: 1px 1px white; + } + .jstree-default-dark-responsive > .jstree-striped { + background: transparent; + } + .jstree-default-dark-responsive .jstree-wholerow { + border-top: 1px solid #666666; + border-bottom: 1px solid #000000; + background: #333333; + height: 40px; + } + .jstree-default-dark-responsive .jstree-wholerow-hovered { + background: #555555; + } + .jstree-default-dark-responsive .jstree-wholerow-clicked { + background: #5fa2db; + } + .jstree-default-dark-responsive .jstree-children .jstree-last > .jstree-wholerow { + box-shadow: inset 0 -6px 3px -5px #111111; + } + .jstree-default-dark-responsive .jstree-children .jstree-open > .jstree-wholerow { + box-shadow: inset 0 6px 3px -5px #111111; + border-top: 0; + } + .jstree-default-dark-responsive .jstree-children .jstree-open + .jstree-open { + box-shadow: none; + } + .jstree-default-dark-responsive .jstree-node, + .jstree-default-dark-responsive .jstree-icon, + .jstree-default-dark-responsive .jstree-node > .jstree-ocl, + .jstree-default-dark-responsive .jstree-themeicon, + .jstree-default-dark-responsive .jstree-checkbox { + background-image: url("40px.png"); + background-size: 120px 240px; + } + .jstree-default-dark-responsive .jstree-node { + background-position: -80px 0; + background-repeat: repeat-y; + } + .jstree-default-dark-responsive .jstree-last { + background: transparent; + } + .jstree-default-dark-responsive .jstree-leaf > .jstree-ocl { + background-position: -40px -120px; + } + .jstree-default-dark-responsive .jstree-last > .jstree-ocl { + background-position: -40px -160px; + } + .jstree-default-dark-responsive .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; + } + .jstree-default-dark-responsive .jstree-file { + background: url("40px.png") 0 -160px no-repeat; + background-size: 120px 240px; + } + .jstree-default-dark-responsive .jstree-folder { + background: url("40px.png") -40px -40px no-repeat; + background-size: 120px 240px; + } + .jstree-default-dark-responsive > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; + } +} +.jstree-default-dark { + background: #333; +} +.jstree-default-dark .jstree-anchor { + color: #999; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5); +} +.jstree-default-dark .jstree-clicked, +.jstree-default-dark .jstree-checked { + color: white; +} +.jstree-default-dark .jstree-hovered { + color: white; +} +#jstree-marker.jstree-default-dark { + border-left-color: #999; + background: transparent; +} +.jstree-default-dark .jstree-anchor > .jstree-icon { + opacity: 0.75; +} +.jstree-default-dark .jstree-clicked > .jstree-icon, +.jstree-default-dark .jstree-hovered > .jstree-icon, +.jstree-default-dark .jstree-checked > .jstree-icon { + opacity: 1; +} +.jstree-default-dark.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); +} +.jstree-default-dark.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark-small.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); +} +.jstree-default-dark-small.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-dark-large.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); +} +.jstree-default-dark-large.jstree-rtl .jstree-last { + background: transparent; +} diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/style.less b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/style.less new file mode 100644 index 0000000000..0f9a3963d1 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/style.less @@ -0,0 +1,50 @@ +/* jsTree default dark theme */ +@theme-name: default-dark; +@hovered-bg-color: #555; +@hovered-shadow-color: #555; +@disabled-color: #666666; +@disabled-bg-color: #333333; +@clicked-bg-color: #5fa2db; +@clicked-shadow-color: #666666; +@clicked-gradient-color-1: #5fa2db; +@clicked-gradient-color-2: #5fa2db; +@search-result-color: #ffffff; +@mobile-wholerow-bg-color: #333333; +@mobile-wholerow-shadow: #111111; +@mobile-wholerow-bordert: #666; +@mobile-wholerow-borderb: #000; +@responsive: true; +@image-path: ""; +@base-height: 40px; + +@import "../mixins.less"; +@import "../base.less"; +@import "../main.less"; + +.jstree-@{theme-name} { + background:#333; + .jstree-anchor { color:#999; text-shadow:1px 1px 0 rgba(0,0,0,0.5); } + .jstree-clicked, .jstree-checked { color:white; } + .jstree-hovered { color:white; } + #jstree-marker& { + border-left-color:#999; + background:transparent; + } + .jstree-anchor > .jstree-icon { opacity:0.75; } + .jstree-clicked > .jstree-icon, + .jstree-hovered > .jstree-icon, + .jstree-checked > .jstree-icon { opacity:1; } +} +// theme variants +.jstree-@{theme-name} { + &.jstree-rtl .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); } + &.jstree-rtl .jstree-last { background:transparent; } +} +.jstree-@{theme-name}-small { + &.jstree-rtl .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); } + &.jstree-rtl .jstree-last { background:transparent; } +} +.jstree-@{theme-name}-large { + &.jstree-rtl .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); } + &.jstree-rtl .jstree-last { background:transparent; } +} \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/throbber.gif b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/throbber.gif new file mode 100644 index 0000000000..2e310e8be2 Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default-dark/throbber.gif differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/32px.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/32px.png new file mode 100644 index 0000000000..ac74418d28 Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/32px.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/40px.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/40px.png new file mode 100644 index 0000000000..2927326007 Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/40px.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/style.css b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/style.css new file mode 100644 index 0000000000..616be241be --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/style.css @@ -0,0 +1,1102 @@ +/* jsTree default theme */ +.jstree-node, +.jstree-children, +.jstree-container-ul { + display: block; + margin: 0; + padding: 0; + list-style-type: none; + list-style-image: none; +} +.jstree-node { + white-space: nowrap; +} +.jstree-anchor { + display: inline-block; + color: black; + white-space: nowrap; + padding: 0 4px 0 1px; + margin: 0; + vertical-align: top; +} +.jstree-anchor:focus { + outline: 0; +} +.jstree-anchor, +.jstree-anchor:link, +.jstree-anchor:visited, +.jstree-anchor:hover, +.jstree-anchor:active { + text-decoration: none; + color: inherit; +} +.jstree-icon { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0; + vertical-align: top; + text-align: center; +} +.jstree-icon:empty { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0; + vertical-align: top; + text-align: center; +} +.jstree-ocl { + cursor: pointer; +} +.jstree-leaf > .jstree-ocl { + cursor: default; +} +.jstree .jstree-open > .jstree-children { + display: block; +} +.jstree .jstree-closed > .jstree-children, +.jstree .jstree-leaf > .jstree-children { + display: none; +} +.jstree-anchor > .jstree-themeicon { + margin-right: 2px; +} +.jstree-no-icons .jstree-themeicon, +.jstree-anchor > .jstree-themeicon-hidden { + display: none; +} +.jstree-hidden, +.jstree-node.jstree-hidden { + display: none; +} +.jstree-rtl .jstree-anchor { + padding: 0 1px 0 4px; +} +.jstree-rtl .jstree-anchor > .jstree-themeicon { + margin-left: 2px; + margin-right: 0; +} +.jstree-rtl .jstree-node { + margin-left: 0; +} +.jstree-rtl .jstree-container-ul > .jstree-node { + margin-right: 0; +} +.jstree-wholerow-ul { + position: relative; + display: inline-block; + min-width: 100%; +} +.jstree-wholerow-ul .jstree-leaf > .jstree-ocl { + cursor: pointer; +} +.jstree-wholerow-ul .jstree-anchor, +.jstree-wholerow-ul .jstree-icon { + position: relative; +} +.jstree-wholerow-ul .jstree-wholerow { + width: 100%; + cursor: pointer; + position: absolute; + left: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.vakata-context { + display: none; +} +.vakata-context, +.vakata-context ul { + margin: 0; + padding: 2px; + position: absolute; + background: #f5f5f5; + border: 1px solid #979797; + box-shadow: 2px 2px 2px #999999; +} +.vakata-context ul { + list-style: none; + left: 100%; + margin-top: -2.7em; + margin-left: -4px; +} +.vakata-context .vakata-context-right ul { + left: auto; + right: 100%; + margin-left: auto; + margin-right: -4px; +} +.vakata-context li { + list-style: none; +} +.vakata-context li > a { + display: block; + padding: 0 2em 0 2em; + text-decoration: none; + width: auto; + color: black; + white-space: nowrap; + line-height: 2.4em; + text-shadow: 1px 1px 0 white; + border-radius: 1px; +} +.vakata-context li > a:hover { + position: relative; + background-color: #e8eff7; + box-shadow: 0 0 2px #0a6aa1; +} +.vakata-context li > a.vakata-context-parent { + background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw=="); + background-position: right center; + background-repeat: no-repeat; +} +.vakata-context li > a:focus { + outline: 0; +} +.vakata-context .vakata-context-hover > a { + position: relative; + background-color: #e8eff7; + box-shadow: 0 0 2px #0a6aa1; +} +.vakata-context .vakata-context-separator > a, +.vakata-context .vakata-context-separator > a:hover { + background: white; + border: 0; + border-top: 1px solid #e2e3e3; + height: 1px; + min-height: 1px; + max-height: 1px; + padding: 0; + margin: 0 0 0 2.4em; + border-left: 1px solid #e0e0e0; + text-shadow: 0 0 0 transparent; + box-shadow: 0 0 0 transparent; + border-radius: 0; +} +.vakata-context .vakata-contextmenu-disabled a, +.vakata-context .vakata-contextmenu-disabled a:hover { + color: silver; + background-color: transparent; + border: 0; + box-shadow: 0 0 0; +} +.vakata-context li > a > i { + text-decoration: none; + display: inline-block; + width: 2.4em; + height: 2.4em; + background: transparent; + margin: 0 0 0 -2em; + vertical-align: top; + text-align: center; + line-height: 2.4em; +} +.vakata-context li > a > i:empty { + width: 2.4em; + line-height: 2.4em; +} +.vakata-context li > a .vakata-contextmenu-sep { + display: inline-block; + width: 1px; + height: 2.4em; + background: white; + margin: 0 0.5em 0 0; + border-left: 1px solid #e2e3e3; +} +.vakata-context .vakata-contextmenu-shortcut { + font-size: 0.8em; + color: silver; + opacity: 0.5; + display: none; +} +.vakata-context-rtl ul { + left: auto; + right: 100%; + margin-left: auto; + margin-right: -4px; +} +.vakata-context-rtl li > a.vakata-context-parent { + background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7"); + background-position: left center; + background-repeat: no-repeat; +} +.vakata-context-rtl .vakata-context-separator > a { + margin: 0 2.4em 0 0; + border-left: 0; + border-right: 1px solid #e2e3e3; +} +.vakata-context-rtl .vakata-context-left ul { + right: auto; + left: 100%; + margin-left: -4px; + margin-right: auto; +} +.vakata-context-rtl li > a > i { + margin: 0 -2em 0 0; +} +.vakata-context-rtl li > a .vakata-contextmenu-sep { + margin: 0 0 0 0.5em; + border-left-color: white; + background: #e2e3e3; +} +#jstree-marker { + position: absolute; + top: 0; + left: 0; + margin: -5px 0 0 0; + padding: 0; + border-right: 0; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid; + width: 0; + height: 0; + font-size: 0; + line-height: 0; +} +#jstree-dnd { + line-height: 16px; + margin: 0; + padding: 4px; +} +#jstree-dnd .jstree-icon, +#jstree-dnd .jstree-copy { + display: inline-block; + text-decoration: none; + margin: 0 2px 0 0; + padding: 0; + width: 16px; + height: 16px; +} +#jstree-dnd .jstree-ok { + background: green; +} +#jstree-dnd .jstree-er { + background: red; +} +#jstree-dnd .jstree-copy { + margin: 0 2px 0 2px; +} +.jstree-default .jstree-node, +.jstree-default .jstree-icon { + background-repeat: no-repeat; + background-color: transparent; +} +.jstree-default .jstree-anchor, +.jstree-default .jstree-animated, +.jstree-default .jstree-wholerow { + transition: background-color 0.15s, box-shadow 0.15s; +} +.jstree-default .jstree-hovered { + background: #e7f4f9; + border-radius: 2px; + box-shadow: inset 0 0 1px #cccccc; +} +.jstree-default .jstree-context { + background: #e7f4f9; + border-radius: 2px; + box-shadow: inset 0 0 1px #cccccc; +} +.jstree-default .jstree-clicked { + background: #beebff; + border-radius: 2px; + box-shadow: inset 0 0 1px #999999; +} +.jstree-default .jstree-no-icons .jstree-anchor > .jstree-themeicon { + display: none; +} +.jstree-default .jstree-disabled { + background: transparent; + color: #666666; +} +.jstree-default .jstree-disabled.jstree-hovered { + background: transparent; + box-shadow: none; +} +.jstree-default .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default .jstree-disabled > .jstree-icon { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default .jstree-search { + font-style: italic; + color: #8b0000; + font-weight: bold; +} +.jstree-default .jstree-no-checkboxes .jstree-checkbox { + display: none !important; +} +.jstree-default.jstree-checkbox-no-clicked .jstree-clicked { + background: transparent; + box-shadow: none; +} +.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered { + background: #e7f4f9; +} +.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked { + background: transparent; +} +.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered { + background: #e7f4f9; +} +.jstree-default > .jstree-striped { + min-width: 100%; + display: inline-block; + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat; +} +.jstree-default > .jstree-wholerow-ul .jstree-hovered, +.jstree-default > .jstree-wholerow-ul .jstree-clicked { + background: transparent; + box-shadow: none; + border-radius: 0; +} +.jstree-default .jstree-wholerow { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.jstree-default .jstree-wholerow-hovered { + background: #e7f4f9; +} +.jstree-default .jstree-wholerow-clicked { + background: #beebff; + background: -webkit-linear-gradient(top, #beebff 0%, #a8e4ff 100%); + background: linear-gradient(to bottom, #beebff 0%, #a8e4ff 100%); +} +.jstree-default .jstree-node { + min-height: 24px; + line-height: 24px; + margin-left: 24px; + min-width: 24px; +} +.jstree-default .jstree-anchor { + line-height: 24px; + height: 24px; +} +.jstree-default .jstree-icon { + width: 24px; + height: 24px; + line-height: 24px; +} +.jstree-default .jstree-icon:empty { + width: 24px; + height: 24px; + line-height: 24px; +} +.jstree-default.jstree-rtl .jstree-node { + margin-right: 24px; +} +.jstree-default .jstree-wholerow { + height: 24px; +} +.jstree-default .jstree-node, +.jstree-default .jstree-icon { + background-image: url("32px.png"); +} +.jstree-default .jstree-node { + background-position: -292px -4px; + background-repeat: repeat-y; +} +.jstree-default .jstree-last { + background: transparent; +} +.jstree-default .jstree-open > .jstree-ocl { + background-position: -132px -4px; +} +.jstree-default .jstree-closed > .jstree-ocl { + background-position: -100px -4px; +} +.jstree-default .jstree-leaf > .jstree-ocl { + background-position: -68px -4px; +} +.jstree-default .jstree-themeicon { + background-position: -260px -4px; +} +.jstree-default > .jstree-no-dots .jstree-node, +.jstree-default > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -36px -4px; +} +.jstree-default > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -4px -4px; +} +.jstree-default .jstree-disabled { + background: transparent; +} +.jstree-default .jstree-disabled.jstree-hovered { + background: transparent; +} +.jstree-default .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default .jstree-checkbox { + background-position: -164px -4px; +} +.jstree-default .jstree-checkbox:hover { + background-position: -164px -36px; +} +.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, +.jstree-default .jstree-checked > .jstree-checkbox { + background-position: -228px -4px; +} +.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, +.jstree-default .jstree-checked > .jstree-checkbox:hover { + background-position: -228px -36px; +} +.jstree-default .jstree-anchor > .jstree-undetermined { + background-position: -196px -4px; +} +.jstree-default .jstree-anchor > .jstree-undetermined:hover { + background-position: -196px -36px; +} +.jstree-default .jstree-checkbox-disabled { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default > .jstree-striped { + background-size: auto 48px; +} +.jstree-default.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); + background-position: 100% 1px; + background-repeat: repeat-y; +} +.jstree-default.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default.jstree-rtl .jstree-open > .jstree-ocl { + background-position: -132px -36px; +} +.jstree-default.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -100px -36px; +} +.jstree-default.jstree-rtl .jstree-leaf > .jstree-ocl { + background-position: -68px -36px; +} +.jstree-default.jstree-rtl > .jstree-no-dots .jstree-node, +.jstree-default.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -36px -36px; +} +.jstree-default.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -4px -36px; +} +.jstree-default .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; +} +.jstree-default > .jstree-container-ul .jstree-loading > .jstree-ocl { + background: url("throbber.gif") center center no-repeat; +} +.jstree-default .jstree-file { + background: url("32px.png") -100px -68px no-repeat; +} +.jstree-default .jstree-folder { + background: url("32px.png") -260px -4px no-repeat; +} +.jstree-default > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; +} +#jstree-dnd.jstree-default { + line-height: 24px; + padding: 0 4px; +} +#jstree-dnd.jstree-default .jstree-ok, +#jstree-dnd.jstree-default .jstree-er { + background-image: url("32px.png"); + background-repeat: no-repeat; + background-color: transparent; +} +#jstree-dnd.jstree-default i { + background: transparent; + width: 24px; + height: 24px; + line-height: 24px; +} +#jstree-dnd.jstree-default .jstree-ok { + background-position: -4px -68px; +} +#jstree-dnd.jstree-default .jstree-er { + background-position: -36px -68px; +} +.jstree-default .jstree-ellipsis { + overflow: hidden; +} +.jstree-default .jstree-ellipsis .jstree-anchor { + width: calc(100% - 29px); + text-overflow: ellipsis; + overflow: hidden; +} +.jstree-default .jstree-ellipsis.jstree-no-icons .jstree-anchor { + width: calc(100% - 5px); +} +.jstree-default.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); +} +.jstree-default.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-small .jstree-node { + min-height: 18px; + line-height: 18px; + margin-left: 18px; + min-width: 18px; +} +.jstree-default-small .jstree-anchor { + line-height: 18px; + height: 18px; +} +.jstree-default-small .jstree-icon { + width: 18px; + height: 18px; + line-height: 18px; +} +.jstree-default-small .jstree-icon:empty { + width: 18px; + height: 18px; + line-height: 18px; +} +.jstree-default-small.jstree-rtl .jstree-node { + margin-right: 18px; +} +.jstree-default-small .jstree-wholerow { + height: 18px; +} +.jstree-default-small .jstree-node, +.jstree-default-small .jstree-icon { + background-image: url("32px.png"); +} +.jstree-default-small .jstree-node { + background-position: -295px -7px; + background-repeat: repeat-y; +} +.jstree-default-small .jstree-last { + background: transparent; +} +.jstree-default-small .jstree-open > .jstree-ocl { + background-position: -135px -7px; +} +.jstree-default-small .jstree-closed > .jstree-ocl { + background-position: -103px -7px; +} +.jstree-default-small .jstree-leaf > .jstree-ocl { + background-position: -71px -7px; +} +.jstree-default-small .jstree-themeicon { + background-position: -263px -7px; +} +.jstree-default-small > .jstree-no-dots .jstree-node, +.jstree-default-small > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-small > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -39px -7px; +} +.jstree-default-small > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -7px -7px; +} +.jstree-default-small .jstree-disabled { + background: transparent; +} +.jstree-default-small .jstree-disabled.jstree-hovered { + background: transparent; +} +.jstree-default-small .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default-small .jstree-checkbox { + background-position: -167px -7px; +} +.jstree-default-small .jstree-checkbox:hover { + background-position: -167px -39px; +} +.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, +.jstree-default-small .jstree-checked > .jstree-checkbox { + background-position: -231px -7px; +} +.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, +.jstree-default-small .jstree-checked > .jstree-checkbox:hover { + background-position: -231px -39px; +} +.jstree-default-small .jstree-anchor > .jstree-undetermined { + background-position: -199px -7px; +} +.jstree-default-small .jstree-anchor > .jstree-undetermined:hover { + background-position: -199px -39px; +} +.jstree-default-small .jstree-checkbox-disabled { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default-small > .jstree-striped { + background-size: auto 36px; +} +.jstree-default-small.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); + background-position: 100% 1px; + background-repeat: repeat-y; +} +.jstree-default-small.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-small.jstree-rtl .jstree-open > .jstree-ocl { + background-position: -135px -39px; +} +.jstree-default-small.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -103px -39px; +} +.jstree-default-small.jstree-rtl .jstree-leaf > .jstree-ocl { + background-position: -71px -39px; +} +.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-node, +.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -39px -39px; +} +.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: -7px -39px; +} +.jstree-default-small .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; +} +.jstree-default-small > .jstree-container-ul .jstree-loading > .jstree-ocl { + background: url("throbber.gif") center center no-repeat; +} +.jstree-default-small .jstree-file { + background: url("32px.png") -103px -71px no-repeat; +} +.jstree-default-small .jstree-folder { + background: url("32px.png") -263px -7px no-repeat; +} +.jstree-default-small > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; +} +#jstree-dnd.jstree-default-small { + line-height: 18px; + padding: 0 4px; +} +#jstree-dnd.jstree-default-small .jstree-ok, +#jstree-dnd.jstree-default-small .jstree-er { + background-image: url("32px.png"); + background-repeat: no-repeat; + background-color: transparent; +} +#jstree-dnd.jstree-default-small i { + background: transparent; + width: 18px; + height: 18px; + line-height: 18px; +} +#jstree-dnd.jstree-default-small .jstree-ok { + background-position: -7px -71px; +} +#jstree-dnd.jstree-default-small .jstree-er { + background-position: -39px -71px; +} +.jstree-default-small .jstree-ellipsis { + overflow: hidden; +} +.jstree-default-small .jstree-ellipsis .jstree-anchor { + width: calc(100% - 23px); + text-overflow: ellipsis; + overflow: hidden; +} +.jstree-default-small .jstree-ellipsis.jstree-no-icons .jstree-anchor { + width: calc(100% - 5px); +} +.jstree-default-small.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); +} +.jstree-default-small.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-large .jstree-node { + min-height: 32px; + line-height: 32px; + margin-left: 32px; + min-width: 32px; +} +.jstree-default-large .jstree-anchor { + line-height: 32px; + height: 32px; +} +.jstree-default-large .jstree-icon { + width: 32px; + height: 32px; + line-height: 32px; +} +.jstree-default-large .jstree-icon:empty { + width: 32px; + height: 32px; + line-height: 32px; +} +.jstree-default-large.jstree-rtl .jstree-node { + margin-right: 32px; +} +.jstree-default-large .jstree-wholerow { + height: 32px; +} +.jstree-default-large .jstree-node, +.jstree-default-large .jstree-icon { + background-image: url("32px.png"); +} +.jstree-default-large .jstree-node { + background-position: -288px 0px; + background-repeat: repeat-y; +} +.jstree-default-large .jstree-last { + background: transparent; +} +.jstree-default-large .jstree-open > .jstree-ocl { + background-position: -128px 0px; +} +.jstree-default-large .jstree-closed > .jstree-ocl { + background-position: -96px 0px; +} +.jstree-default-large .jstree-leaf > .jstree-ocl { + background-position: -64px 0px; +} +.jstree-default-large .jstree-themeicon { + background-position: -256px 0px; +} +.jstree-default-large > .jstree-no-dots .jstree-node, +.jstree-default-large > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-large > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -32px 0px; +} +.jstree-default-large > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: 0px 0px; +} +.jstree-default-large .jstree-disabled { + background: transparent; +} +.jstree-default-large .jstree-disabled.jstree-hovered { + background: transparent; +} +.jstree-default-large .jstree-disabled.jstree-clicked { + background: #efefef; +} +.jstree-default-large .jstree-checkbox { + background-position: -160px 0px; +} +.jstree-default-large .jstree-checkbox:hover { + background-position: -160px -32px; +} +.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, +.jstree-default-large .jstree-checked > .jstree-checkbox { + background-position: -224px 0px; +} +.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, +.jstree-default-large .jstree-checked > .jstree-checkbox:hover { + background-position: -224px -32px; +} +.jstree-default-large .jstree-anchor > .jstree-undetermined { + background-position: -192px 0px; +} +.jstree-default-large .jstree-anchor > .jstree-undetermined:hover { + background-position: -192px -32px; +} +.jstree-default-large .jstree-checkbox-disabled { + opacity: 0.8; + filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); + /* Firefox 10+ */ + filter: gray; + /* IE6-9 */ + -webkit-filter: grayscale(100%); + /* Chrome 19+ & Safari 6+ */ +} +.jstree-default-large > .jstree-striped { + background-size: auto 64px; +} +.jstree-default-large.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); + background-position: 100% 1px; + background-repeat: repeat-y; +} +.jstree-default-large.jstree-rtl .jstree-last { + background: transparent; +} +.jstree-default-large.jstree-rtl .jstree-open > .jstree-ocl { + background-position: -128px -32px; +} +.jstree-default-large.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -96px -32px; +} +.jstree-default-large.jstree-rtl .jstree-leaf > .jstree-ocl { + background-position: -64px -32px; +} +.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-node, +.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { + background: transparent; +} +.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { + background-position: -32px -32px; +} +.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { + background-position: 0px -32px; +} +.jstree-default-large .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; +} +.jstree-default-large > .jstree-container-ul .jstree-loading > .jstree-ocl { + background: url("throbber.gif") center center no-repeat; +} +.jstree-default-large .jstree-file { + background: url("32px.png") -96px -64px no-repeat; +} +.jstree-default-large .jstree-folder { + background: url("32px.png") -256px 0px no-repeat; +} +.jstree-default-large > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; +} +#jstree-dnd.jstree-default-large { + line-height: 32px; + padding: 0 4px; +} +#jstree-dnd.jstree-default-large .jstree-ok, +#jstree-dnd.jstree-default-large .jstree-er { + background-image: url("32px.png"); + background-repeat: no-repeat; + background-color: transparent; +} +#jstree-dnd.jstree-default-large i { + background: transparent; + width: 32px; + height: 32px; + line-height: 32px; +} +#jstree-dnd.jstree-default-large .jstree-ok { + background-position: 0px -64px; +} +#jstree-dnd.jstree-default-large .jstree-er { + background-position: -32px -64px; +} +.jstree-default-large .jstree-ellipsis { + overflow: hidden; +} +.jstree-default-large .jstree-ellipsis .jstree-anchor { + width: calc(100% - 37px); + text-overflow: ellipsis; + overflow: hidden; +} +.jstree-default-large .jstree-ellipsis.jstree-no-icons .jstree-anchor { + width: calc(100% - 5px); +} +.jstree-default-large.jstree-rtl .jstree-node { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); +} +.jstree-default-large.jstree-rtl .jstree-last { + background: transparent; +} +@media (max-width: 768px) { + #jstree-dnd.jstree-dnd-responsive { + line-height: 40px; + font-weight: bold; + font-size: 1.1em; + text-shadow: 1px 1px white; + } + #jstree-dnd.jstree-dnd-responsive > i { + background: transparent; + width: 40px; + height: 40px; + } + #jstree-dnd.jstree-dnd-responsive > .jstree-ok { + background-image: url("40px.png"); + background-position: 0 -200px; + background-size: 120px 240px; + } + #jstree-dnd.jstree-dnd-responsive > .jstree-er { + background-image: url("40px.png"); + background-position: -40px -200px; + background-size: 120px 240px; + } + #jstree-marker.jstree-dnd-responsive { + border-left-width: 10px; + border-top-width: 10px; + border-bottom-width: 10px; + margin-top: -10px; + } +} +@media (max-width: 768px) { + .jstree-default-responsive { + /* + .jstree-open > .jstree-ocl, + .jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; } + */ + } + .jstree-default-responsive .jstree-icon { + background-image: url("40px.png"); + } + .jstree-default-responsive .jstree-node, + .jstree-default-responsive .jstree-leaf > .jstree-ocl { + background: transparent; + } + .jstree-default-responsive .jstree-node { + min-height: 40px; + line-height: 40px; + margin-left: 40px; + min-width: 40px; + white-space: nowrap; + } + .jstree-default-responsive .jstree-anchor { + line-height: 40px; + height: 40px; + } + .jstree-default-responsive .jstree-icon, + .jstree-default-responsive .jstree-icon:empty { + width: 40px; + height: 40px; + line-height: 40px; + } + .jstree-default-responsive > .jstree-container-ul > .jstree-node { + margin-left: 0; + } + .jstree-default-responsive.jstree-rtl .jstree-node { + margin-left: 0; + margin-right: 40px; + background: transparent; + } + .jstree-default-responsive.jstree-rtl .jstree-container-ul > .jstree-node { + margin-right: 0; + } + .jstree-default-responsive .jstree-ocl, + .jstree-default-responsive .jstree-themeicon, + .jstree-default-responsive .jstree-checkbox { + background-size: 120px 240px; + } + .jstree-default-responsive .jstree-leaf > .jstree-ocl, + .jstree-default-responsive.jstree-rtl .jstree-leaf > .jstree-ocl { + background: transparent; + } + .jstree-default-responsive .jstree-open > .jstree-ocl { + background-position: 0 0px !important; + } + .jstree-default-responsive .jstree-closed > .jstree-ocl { + background-position: 0 -40px !important; + } + .jstree-default-responsive.jstree-rtl .jstree-closed > .jstree-ocl { + background-position: -40px 0px !important; + } + .jstree-default-responsive .jstree-themeicon { + background-position: -40px -40px; + } + .jstree-default-responsive .jstree-checkbox, + .jstree-default-responsive .jstree-checkbox:hover { + background-position: -40px -80px; + } + .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, + .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, + .jstree-default-responsive .jstree-checked > .jstree-checkbox, + .jstree-default-responsive .jstree-checked > .jstree-checkbox:hover { + background-position: 0 -80px; + } + .jstree-default-responsive .jstree-anchor > .jstree-undetermined, + .jstree-default-responsive .jstree-anchor > .jstree-undetermined:hover { + background-position: 0 -120px; + } + .jstree-default-responsive .jstree-anchor { + font-weight: bold; + font-size: 1.1em; + text-shadow: 1px 1px white; + } + .jstree-default-responsive > .jstree-striped { + background: transparent; + } + .jstree-default-responsive .jstree-wholerow { + border-top: 1px solid rgba(255, 255, 255, 0.7); + border-bottom: 1px solid rgba(64, 64, 64, 0.2); + background: #ebebeb; + height: 40px; + } + .jstree-default-responsive .jstree-wholerow-hovered { + background: #e7f4f9; + } + .jstree-default-responsive .jstree-wholerow-clicked { + background: #beebff; + } + .jstree-default-responsive .jstree-children .jstree-last > .jstree-wholerow { + box-shadow: inset 0 -6px 3px -5px #666666; + } + .jstree-default-responsive .jstree-children .jstree-open > .jstree-wholerow { + box-shadow: inset 0 6px 3px -5px #666666; + border-top: 0; + } + .jstree-default-responsive .jstree-children .jstree-open + .jstree-open { + box-shadow: none; + } + .jstree-default-responsive .jstree-node, + .jstree-default-responsive .jstree-icon, + .jstree-default-responsive .jstree-node > .jstree-ocl, + .jstree-default-responsive .jstree-themeicon, + .jstree-default-responsive .jstree-checkbox { + background-image: url("40px.png"); + background-size: 120px 240px; + } + .jstree-default-responsive .jstree-node { + background-position: -80px 0; + background-repeat: repeat-y; + } + .jstree-default-responsive .jstree-last { + background: transparent; + } + .jstree-default-responsive .jstree-leaf > .jstree-ocl { + background-position: -40px -120px; + } + .jstree-default-responsive .jstree-last > .jstree-ocl { + background-position: -40px -160px; + } + .jstree-default-responsive .jstree-themeicon-custom { + background-color: transparent; + background-image: none; + background-position: 0 0; + } + .jstree-default-responsive .jstree-file { + background: url("40px.png") 0 -160px no-repeat; + background-size: 120px 240px; + } + .jstree-default-responsive .jstree-folder { + background: url("40px.png") -40px -40px no-repeat; + background-size: 120px 240px; + } + .jstree-default-responsive > .jstree-container-ul > .jstree-node { + margin-left: 0; + margin-right: 0; + } +} diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/style.less b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/style.less new file mode 100644 index 0000000000..53f786fa7e --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/style.less @@ -0,0 +1,22 @@ +/* jsTree default theme */ +@theme-name: default; +@hovered-bg-color: #e7f4f9; +@hovered-shadow-color: #cccccc; +@disabled-color: #666666; +@disabled-bg-color: #efefef; +@clicked-bg-color: #beebff; +@clicked-shadow-color: #999999; +@clicked-gradient-color-1: #beebff; +@clicked-gradient-color-2: #a8e4ff; +@search-result-color: #8b0000; +@mobile-wholerow-bg-color: #ebebeb; +@mobile-wholerow-shadow: #666666; +@mobile-wholerow-bordert: rgba(255,255,255,0.7); +@mobile-wholerow-borderb: rgba(64,64,64,0.2); +@responsive: true; +@image-path: ""; +@base-height: 40px; + +@import "../mixins.less"; +@import "../base.less"; +@import "../main.less"; \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/throbber.gif b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/throbber.gif new file mode 100644 index 0000000000..5b33f7e54f Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/default/throbber.gif differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/main.less b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/main.less new file mode 100644 index 0000000000..8616cc039f --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/main.less @@ -0,0 +1,77 @@ +.jstree-@{theme-name} { + .jstree-node, + .jstree-icon { background-repeat:no-repeat; background-color:transparent; } + .jstree-anchor, + .jstree-animated, + .jstree-wholerow { transition:background-color 0.15s, box-shadow 0.15s; } + .jstree-hovered { background:@hovered-bg-color; border-radius:2px; box-shadow:inset 0 0 1px @hovered-shadow-color; } + .jstree-context { background:@hovered-bg-color; border-radius:2px; box-shadow:inset 0 0 1px @hovered-shadow-color; } + .jstree-clicked { background:@clicked-bg-color; border-radius:2px; box-shadow:inset 0 0 1px @clicked-shadow-color; } + .jstree-no-icons .jstree-anchor > .jstree-themeicon { display:none; } + .jstree-disabled { + background:transparent; color:@disabled-color; + &.jstree-hovered { background:transparent; box-shadow:none; } + &.jstree-clicked { background:@disabled-bg-color; } + > .jstree-icon { opacity:0.8; filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); /* Firefox 10+ */ filter: gray; /* IE6-9 */ -webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */ } + } + // search + .jstree-search { font-style:italic; color:@search-result-color; font-weight:bold; } + // checkboxes + .jstree-no-checkboxes .jstree-checkbox { display:none !important; } + &.jstree-checkbox-no-clicked { + .jstree-clicked { + background:transparent; + box-shadow:none; + &.jstree-hovered { background:@hovered-bg-color; } + } + > .jstree-wholerow-ul .jstree-wholerow-clicked { + background:transparent; + &.jstree-wholerow-hovered { background:@hovered-bg-color; } + } + } + // stripes + > .jstree-striped { min-width:100%; display:inline-block; background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat; } + // wholerow + > .jstree-wholerow-ul .jstree-hovered, + > .jstree-wholerow-ul .jstree-clicked { background:transparent; box-shadow:none; border-radius:0; } + .jstree-wholerow { -moz-box-sizing:border-box; -webkit-box-sizing:border-box; box-sizing:border-box; } + .jstree-wholerow-hovered { background:@hovered-bg-color; } + .jstree-wholerow-clicked { .gradient(@clicked-gradient-color-1, @clicked-gradient-color-2); } +} + +// theme variants +.jstree-@{theme-name} { + .jstree-theme(24px, "@{image-path}32px.png", 32px); + &.jstree-rtl .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); } + &.jstree-rtl .jstree-last { background:transparent; } +} +.jstree-@{theme-name}-small { + .jstree-theme(18px, "@{image-path}32px.png", 32px); + &.jstree-rtl .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); } + &.jstree-rtl .jstree-last { background:transparent; } +} +.jstree-@{theme-name}-large { + .jstree-theme(32px, "@{image-path}32px.png", 32px); + &.jstree-rtl .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); } + &.jstree-rtl .jstree-last { background:transparent; } +} + +// mobile theme attempt +@media (max-width: 768px) { + #jstree-dnd.jstree-dnd-responsive when (@responsive = true) { + line-height:@base-height; font-weight:bold; font-size:1.1em; text-shadow:1px 1px white; + > i { background:transparent; width:@base-height; height:@base-height; } + > .jstree-ok { background-image:url("@{image-path}@{base-height}.png"); background-position:0 -(@base-height * 5); background-size:(@base-height * 3) (@base-height * 6); } + > .jstree-er { background-image:url("@{image-path}@{base-height}.png"); background-position:-(@base-height * 1) -(@base-height * 5); background-size:(@base-height * 3) (@base-height * 6); } + } + #jstree-marker.jstree-dnd-responsive when (@responsive = true) { + border-left-width:10px; + border-top-width:10px; + border-bottom-width:10px; + margin-top:-10px; + } +} + +.jstree-@{theme-name}-responsive when (@responsive = true) { + @import "responsive.less"; +} diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/mixins.less b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/mixins.less new file mode 100644 index 0000000000..3018623b26 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/mixins.less @@ -0,0 +1,105 @@ +.gradient (@color1; @color2) { + background:@color1; + background: -webkit-linear-gradient(top, @color1 0%,@color2 100%); + background: linear-gradient(to bottom, @color1 0%,@color2 100%); +} + +.jstree-theme (@base-height, @image, @image-height) { + @correction: (@image-height - @base-height) / 2; + + .jstree-node { min-height:@base-height; line-height:@base-height; margin-left:@base-height; min-width:@base-height; } + .jstree-anchor { line-height:@base-height; height:@base-height; } + .jstree-icon { width:@base-height; height:@base-height; line-height:@base-height; } + .jstree-icon:empty { width:@base-height; height:@base-height; line-height:@base-height; } + &.jstree-rtl .jstree-node { margin-right:@base-height; } + .jstree-wholerow { height:@base-height; } + + .jstree-node, + .jstree-icon { background-image:url("@{image}"); } + .jstree-node { background-position:-(@image-height * 9 + @correction) -@correction; background-repeat:repeat-y; } + .jstree-last { background:transparent; } + + .jstree-open > .jstree-ocl { background-position:-(@image-height * 4 + @correction) -@correction; } + .jstree-closed > .jstree-ocl { background-position:-(@image-height * 3 + @correction) -@correction; } + .jstree-leaf > .jstree-ocl { background-position:-(@image-height * 2 + @correction) -@correction; } + + .jstree-themeicon { background-position:-(@image-height * 8 + @correction) -@correction; } + + > .jstree-no-dots { + .jstree-node, + .jstree-leaf > .jstree-ocl { background:transparent; } + .jstree-open > .jstree-ocl { background-position:-(@image-height * 1 + @correction) -@correction; } + .jstree-closed > .jstree-ocl { background-position:-@correction -@correction; } + } + + .jstree-disabled { + background:transparent; + &.jstree-hovered { + background:transparent; + } + &.jstree-clicked { + background:#efefef; + } + } + + .jstree-checkbox { + background-position:-(@image-height * 5 + @correction) -@correction; + &:hover { background-position:-(@image-height * 5 + @correction) -(@image-height * 1 + @correction); } + } + + &.jstree-checkbox-selection .jstree-clicked, .jstree-checked { + > .jstree-checkbox { + background-position:-(@image-height * 7 + @correction) -@correction; + &:hover { background-position:-(@image-height * 7 + @correction) -(@image-height * 1 + @correction); } + } + } + .jstree-anchor { + > .jstree-undetermined { + background-position:-(@image-height * 6 + @correction) -@correction; + &:hover { + background-position:-(@image-height * 6 + @correction) -(@image-height * 1 + @correction); + } + } + } + .jstree-checkbox-disabled { opacity:0.8; filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); /* Firefox 10+ */ filter: gray; /* IE6-9 */ -webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */ } + + > .jstree-striped { background-size:auto (@base-height * 2); } + + &.jstree-rtl { + .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); background-position: 100% 1px; background-repeat:repeat-y; } + .jstree-last { background:transparent; } + .jstree-open > .jstree-ocl { background-position:-(@image-height * 4 + @correction) -(@image-height * 1 + @correction); } + .jstree-closed > .jstree-ocl { background-position:-(@image-height * 3 + @correction) -(@image-height * 1 + @correction); } + .jstree-leaf > .jstree-ocl { background-position:-(@image-height * 2 + @correction) -(@image-height * 1 + @correction); } + > .jstree-no-dots { + .jstree-node, + .jstree-leaf > .jstree-ocl { background:transparent; } + .jstree-open > .jstree-ocl { background-position:-(@image-height * 1 + @correction) -(@image-height * 1 + @correction); } + .jstree-closed > .jstree-ocl { background-position:-@correction -(@image-height * 1 + @correction); } + } + } + .jstree-themeicon-custom { background-color:transparent; background-image:none; background-position:0 0; } + + > .jstree-container-ul .jstree-loading > .jstree-ocl { background:url("@{image-path}throbber.gif") center center no-repeat; } + + .jstree-file { background:url("@{image}") -(@image-height * 3 + @correction) -(@image-height * 2 + @correction) no-repeat; } + .jstree-folder { background:url("@{image}") -(@image-height * 8 + @correction) -(@correction) no-repeat; } + + > .jstree-container-ul > .jstree-node { margin-left:0; margin-right:0; } + + // drag'n'drop + #jstree-dnd& { + line-height:@base-height; padding:0 4px; + .jstree-ok, + .jstree-er { background-image:url("@{image-path}32px.png"); background-repeat:no-repeat; background-color:transparent; } + i { background:transparent; width:@base-height; height:@base-height; line-height:@base-height; } + .jstree-ok { background-position: -(@correction) -(@image-height * 2 + @correction); } + .jstree-er { background-position: -(@image-height * 1 + @correction) -(@image-height * 2 + @correction); } + } + + // ellipsis + .jstree-ellipsis { overflow: hidden; } + // base height + PADDINGS! + .jstree-ellipsis .jstree-anchor { width: calc(100% ~"-" (@base-height + 5px)); text-overflow: ellipsis; overflow: hidden; } + .jstree-ellipsis.jstree-no-icons .jstree-anchor { width: calc(100% ~"-" 5px); } +} diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/responsive.less b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/responsive.less new file mode 100644 index 0000000000..364e007518 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/themes/responsive.less @@ -0,0 +1,67 @@ +@media (max-width: 768px) { + // background image + .jstree-icon { background-image:url("@{image-path}@{base-height}.png"); } + + .jstree-node, + .jstree-leaf > .jstree-ocl { background:transparent; } + + .jstree-node { min-height:@base-height; line-height:@base-height; margin-left:@base-height; min-width:@base-height; white-space:nowrap; } + .jstree-anchor { line-height:@base-height; height:@base-height; } + .jstree-icon, .jstree-icon:empty { width:@base-height; height:@base-height; line-height:@base-height; } + + > .jstree-container-ul > .jstree-node { margin-left:0; } + &.jstree-rtl .jstree-node { margin-left:0; margin-right:@base-height; background:transparent; } + &.jstree-rtl .jstree-container-ul > .jstree-node { margin-right:0; } + + .jstree-ocl, + .jstree-themeicon, + .jstree-checkbox { background-size:(@base-height * 3) (@base-height * 6); } + .jstree-leaf > .jstree-ocl, + &.jstree-rtl .jstree-leaf > .jstree-ocl { background:transparent; } + .jstree-open > .jstree-ocl { background-position:0 0px !important; } + .jstree-closed > .jstree-ocl { background-position:0 -(@base-height * 1) !important; } + &.jstree-rtl .jstree-closed > .jstree-ocl { background-position:-(@base-height * 1) 0px !important; } + + .jstree-themeicon { background-position:-(@base-height * 1) -(@base-height * 1); } + + .jstree-checkbox, .jstree-checkbox:hover { background-position:-(@base-height * 1) -(@base-height * 2); } + &.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, + &.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, + .jstree-checked > .jstree-checkbox, + .jstree-checked > .jstree-checkbox:hover { background-position:0 -(@base-height * 2); } + .jstree-anchor > .jstree-undetermined, .jstree-anchor > .jstree-undetermined:hover { background-position:0 -(@base-height * 3); } + + .jstree-anchor { font-weight:bold; font-size:1.1em; text-shadow:1px 1px white; } + + > .jstree-striped { background:transparent; } + .jstree-wholerow { border-top:1px solid @mobile-wholerow-bordert; border-bottom:1px solid @mobile-wholerow-borderb; background:@mobile-wholerow-bg-color; height:@base-height; } + .jstree-wholerow-hovered { background:@hovered-bg-color; } + .jstree-wholerow-clicked { background:@clicked-bg-color; } + + // thanks to PHOTONUI + .jstree-children .jstree-last > .jstree-wholerow { box-shadow: inset 0 -6px 3px -5px @mobile-wholerow-shadow; } + .jstree-children .jstree-open > .jstree-wholerow { box-shadow: inset 0 6px 3px -5px @mobile-wholerow-shadow; border-top:0; } + .jstree-children .jstree-open + .jstree-open { box-shadow:none; } + + // experiment + .jstree-node, + .jstree-icon, + .jstree-node > .jstree-ocl, + .jstree-themeicon, + .jstree-checkbox { background-image:url("@{image-path}@{base-height}.png"); background-size:(@base-height * 3) (@base-height * 6); } + + .jstree-node { background-position:-(@base-height * 2) 0; background-repeat:repeat-y; } + .jstree-last { background:transparent; } + .jstree-leaf > .jstree-ocl { background-position:-(@base-height * 1) -(@base-height * 3); } + .jstree-last > .jstree-ocl { background-position:-(@base-height * 1) -(@base-height * 4); } + /* + .jstree-open > .jstree-ocl, + .jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; } + */ + + .jstree-themeicon-custom { background-color:transparent; background-image:none; background-position:0 0; } + .jstree-file { background:url("@{image-path}@{base-height}.png") 0 -(@base-height * 4) no-repeat; background-size:(@base-height * 3) (@base-height * 6); } + .jstree-folder { background:url("@{image-path}@{base-height}.png") -(@base-height * 1) -(@base-height * 1) no-repeat; background-size:(@base-height * 3) (@base-height * 6); } + + > .jstree-container-ul > .jstree-node { margin-left:0; margin-right:0; } +} \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/src/vakata-jstree.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/vakata-jstree.js new file mode 100644 index 0000000000..9838885177 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/src/vakata-jstree.js @@ -0,0 +1,38 @@ +(function (factory) { + "use strict"; + if (typeof define === 'function' && define.amd) { + define('jstree.checkbox', ['jquery','jstree'], factory); + } + else if(typeof exports === 'object') { + factory(require('jquery'), require('jstree')); + } + else { + factory(jQuery); + } +}(function ($, undefined) { + "use strict"; + if(document.registerElement && Object && Object.create) { + var proto = Object.create(HTMLElement.prototype); + proto.createdCallback = function () { + var c = { core : {}, plugins : [] }, i; + for(i in $.jstree.plugins) { + if($.jstree.plugins.hasOwnProperty(i) && this.attributes[i]) { + c.plugins.push(i); + if(this.getAttribute(i) && JSON.parse(this.getAttribute(i))) { + c[i] = JSON.parse(this.getAttribute(i)); + } + } + } + for(i in $.jstree.defaults.core) { + if($.jstree.defaults.core.hasOwnProperty(i) && this.attributes[i]) { + c.core[i] = JSON.parse(this.getAttribute(i)) || this.getAttribute(i); + } + } + $(this).jstree(c); + }; + // proto.attributeChangedCallback = function (name, previous, value) { }; + try { + document.registerElement("vakata-jstree", { prototype: proto }); + } catch(ignore) { } + } +})); diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/test/unit/index.html b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/unit/index.html new file mode 100644 index 0000000000..0d64e77d67 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/unit/index.html @@ -0,0 +1,16 @@ + + + + + Basic Test Suite + + + + + +
          +
          this had better work.
          + + + + \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/test/unit/libs/qunit.css b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/unit/libs/qunit.css new file mode 100644 index 0000000000..2a6a02bf50 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/unit/libs/qunit.css @@ -0,0 +1,244 @@ +/** + * QUnit v1.12.0 - A JavaScript Unit Testing Framework + * + * http://qunitjs.com + * + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +/** Font Family and Sizes */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { + font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; +} + +#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } +#qunit-tests { font-size: smaller; } + + +/** Resets */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { + margin: 0; + padding: 0; +} + + +/** Header */ + +#qunit-header { + padding: 0.5em 0 0.5em 1em; + + color: #8699a4; + background-color: #0d3349; + + font-size: 1.5em; + line-height: 1em; + font-weight: normal; + + border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-top-right-radius: 5px; + -webkit-border-top-left-radius: 5px; +} + +#qunit-header a { + text-decoration: none; + color: #c2ccd1; +} + +#qunit-header a:hover, +#qunit-header a:focus { + color: #fff; +} + +#qunit-testrunner-toolbar label { + display: inline-block; + padding: 0 .5em 0 .1em; +} + +#qunit-banner { + height: 5px; +} + +#qunit-testrunner-toolbar { + padding: 0.5em 0 0.5em 2em; + color: #5E740B; + background-color: #eee; + overflow: hidden; +} + +#qunit-userAgent { + padding: 0.5em 0 0.5em 2.5em; + background-color: #2b81af; + color: #fff; + text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; +} + +#qunit-modulefilter-container { + float: right; +} + +/** Tests: Pass/Fail */ + +#qunit-tests { + list-style-position: inside; +} + +#qunit-tests li { + padding: 0.4em 0.5em 0.4em 2.5em; + border-bottom: 1px solid #fff; + list-style-position: inside; +} + +#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { + display: none; +} + +#qunit-tests li strong { + cursor: pointer; +} + +#qunit-tests li a { + padding: 0.5em; + color: #c2ccd1; + text-decoration: none; +} +#qunit-tests li a:hover, +#qunit-tests li a:focus { + color: #000; +} + +#qunit-tests li .runtime { + float: right; + font-size: smaller; +} + +.qunit-assert-list { + margin-top: 0.5em; + padding: 0.5em; + + background-color: #fff; + + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} + +.qunit-collapsed { + display: none; +} + +#qunit-tests table { + border-collapse: collapse; + margin-top: .2em; +} + +#qunit-tests th { + text-align: right; + vertical-align: top; + padding: 0 .5em 0 0; +} + +#qunit-tests td { + vertical-align: top; +} + +#qunit-tests pre { + margin: 0; + white-space: pre-wrap; + word-wrap: break-word; +} + +#qunit-tests del { + background-color: #e0f2be; + color: #374e0c; + text-decoration: none; +} + +#qunit-tests ins { + background-color: #ffcaca; + color: #500; + text-decoration: none; +} + +/*** Test Counts */ + +#qunit-tests b.counts { color: black; } +#qunit-tests b.passed { color: #5E740B; } +#qunit-tests b.failed { color: #710909; } + +#qunit-tests li li { + padding: 5px; + background-color: #fff; + border-bottom: none; + list-style-position: inside; +} + +/*** Passing Styles */ + +#qunit-tests li li.pass { + color: #3c510c; + background-color: #fff; + border-left: 10px solid #C6E746; +} + +#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } +#qunit-tests .pass .test-name { color: #366097; } + +#qunit-tests .pass .test-actual, +#qunit-tests .pass .test-expected { color: #999999; } + +#qunit-banner.qunit-pass { background-color: #C6E746; } + +/*** Failing Styles */ + +#qunit-tests li li.fail { + color: #710909; + background-color: #fff; + border-left: 10px solid #EE5757; + white-space: pre; +} + +#qunit-tests > li:last-child { + border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -webkit-border-bottom-right-radius: 5px; + -webkit-border-bottom-left-radius: 5px; +} + +#qunit-tests .fail { color: #000000; background-color: #EE5757; } +#qunit-tests .fail .test-name, +#qunit-tests .fail .module-name { color: #000000; } + +#qunit-tests .fail .test-actual { color: #EE5757; } +#qunit-tests .fail .test-expected { color: green; } + +#qunit-banner.qunit-fail { background-color: #EE5757; } + + +/** Result */ + +#qunit-testresult { + padding: 0.5em 0.5em 0.5em 2.5em; + + color: #2b81af; + background-color: #D2E0E6; + + border-bottom: 1px solid white; +} +#qunit-testresult .module-name { + font-weight: bold; +} + +/** Fixture */ + +#qunit-fixture { + position: absolute; + top: -10000px; + left: -10000px; + width: 1000px; + height: 1000px; +} \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/test/unit/libs/qunit.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/unit/libs/qunit.js new file mode 100644 index 0000000000..7567d5fc51 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/unit/libs/qunit.js @@ -0,0 +1,2212 @@ +/** + * QUnit v1.12.0 - A JavaScript Unit Testing Framework + * + * http://qunitjs.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license/ + */ + +(function( window ) { + +var QUnit, + assert, + config, + onErrorFnPrev, + testId = 0, + fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""), + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + // Keep a local reference to Date (GH-283) + Date = window.Date, + setTimeout = window.setTimeout, + defined = { + setTimeout: typeof window.setTimeout !== "undefined", + sessionStorage: (function() { + var x = "qunit-test-string"; + try { + sessionStorage.setItem( x, x ); + sessionStorage.removeItem( x ); + return true; + } catch( e ) { + return false; + } + }()) + }, + /** + * Provides a normalized error string, correcting an issue + * with IE 7 (and prior) where Error.prototype.toString is + * not properly implemented + * + * Based on http://es5.github.com/#x15.11.4.4 + * + * @param {String|Error} error + * @return {String} error message + */ + errorString = function( error ) { + var name, message, + errorString = error.toString(); + if ( errorString.substring( 0, 7 ) === "[object" ) { + name = error.name ? error.name.toString() : "Error"; + message = error.message ? error.message.toString() : ""; + if ( name && message ) { + return name + ": " + message; + } else if ( name ) { + return name; + } else if ( message ) { + return message; + } else { + return "Error"; + } + } else { + return errorString; + } + }, + /** + * Makes a clone of an object using only Array or Object as base, + * and copies over the own enumerable properties. + * + * @param {Object} obj + * @return {Object} New object with only the own properties (recursively). + */ + objectValues = function( obj ) { + // Grunt 0.3.x uses an older version of jshint that still has jshint/jshint#392. + /*jshint newcap: false */ + var key, val, + vals = QUnit.is( "array", obj ) ? [] : {}; + for ( key in obj ) { + if ( hasOwn.call( obj, key ) ) { + val = obj[key]; + vals[key] = val === Object(val) ? objectValues(val) : val; + } + } + return vals; + }; + +function Test( settings ) { + extend( this, settings ); + this.assertions = []; + this.testNumber = ++Test.count; +} + +Test.count = 0; + +Test.prototype = { + init: function() { + var a, b, li, + tests = id( "qunit-tests" ); + + if ( tests ) { + b = document.createElement( "strong" ); + b.innerHTML = this.nameHtml; + + // `a` initialized at top of scope + a = document.createElement( "a" ); + a.innerHTML = "Rerun"; + a.href = QUnit.url({ testNumber: this.testNumber }); + + li = document.createElement( "li" ); + li.appendChild( b ); + li.appendChild( a ); + li.className = "running"; + li.id = this.id = "qunit-test-output" + testId++; + + tests.appendChild( li ); + } + }, + setup: function() { + if ( + // Emit moduleStart when we're switching from one module to another + this.module !== config.previousModule || + // They could be equal (both undefined) but if the previousModule property doesn't + // yet exist it means this is the first test in a suite that isn't wrapped in a + // module, in which case we'll just emit a moduleStart event for 'undefined'. + // Without this, reporters can get testStart before moduleStart which is a problem. + !hasOwn.call( config, "previousModule" ) + ) { + if ( hasOwn.call( config, "previousModule" ) ) { + runLoggingCallbacks( "moduleDone", QUnit, { + name: config.previousModule, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all + }); + } + config.previousModule = this.module; + config.moduleStats = { all: 0, bad: 0 }; + runLoggingCallbacks( "moduleStart", QUnit, { + name: this.module + }); + } + + config.current = this; + + this.testEnvironment = extend({ + setup: function() {}, + teardown: function() {} + }, this.moduleTestEnvironment ); + + this.started = +new Date(); + runLoggingCallbacks( "testStart", QUnit, { + name: this.testName, + module: this.module + }); + + /*jshint camelcase:false */ + + + /** + * Expose the current test environment. + * + * @deprecated since 1.12.0: Use QUnit.config.current.testEnvironment instead. + */ + QUnit.current_testEnvironment = this.testEnvironment; + + /*jshint camelcase:true */ + + if ( !config.pollution ) { + saveGlobal(); + } + if ( config.notrycatch ) { + this.testEnvironment.setup.call( this.testEnvironment, QUnit.assert ); + return; + } + try { + this.testEnvironment.setup.call( this.testEnvironment, QUnit.assert ); + } catch( e ) { + QUnit.pushFailure( "Setup failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) ); + } + }, + run: function() { + config.current = this; + + var running = id( "qunit-testresult" ); + + if ( running ) { + running.innerHTML = "Running:
          " + this.nameHtml; + } + + if ( this.async ) { + QUnit.stop(); + } + + this.callbackStarted = +new Date(); + + if ( config.notrycatch ) { + this.callback.call( this.testEnvironment, QUnit.assert ); + this.callbackRuntime = +new Date() - this.callbackStarted; + return; + } + + try { + this.callback.call( this.testEnvironment, QUnit.assert ); + this.callbackRuntime = +new Date() - this.callbackStarted; + } catch( e ) { + this.callbackRuntime = +new Date() - this.callbackStarted; + + QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) ); + // else next test will carry the responsibility + saveGlobal(); + + // Restart the tests if they're blocking + if ( config.blocking ) { + QUnit.start(); + } + } + }, + teardown: function() { + config.current = this; + if ( config.notrycatch ) { + if ( typeof this.callbackRuntime === "undefined" ) { + this.callbackRuntime = +new Date() - this.callbackStarted; + } + this.testEnvironment.teardown.call( this.testEnvironment, QUnit.assert ); + return; + } else { + try { + this.testEnvironment.teardown.call( this.testEnvironment, QUnit.assert ); + } catch( e ) { + QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) ); + } + } + checkPollution(); + }, + finish: function() { + config.current = this; + if ( config.requireExpects && this.expected === null ) { + QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack ); + } else if ( this.expected !== null && this.expected !== this.assertions.length ) { + QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack ); + } else if ( this.expected === null && !this.assertions.length ) { + QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack ); + } + + var i, assertion, a, b, time, li, ol, + test = this, + good = 0, + bad = 0, + tests = id( "qunit-tests" ); + + this.runtime = +new Date() - this.started; + config.stats.all += this.assertions.length; + config.moduleStats.all += this.assertions.length; + + if ( tests ) { + ol = document.createElement( "ol" ); + ol.className = "qunit-assert-list"; + + for ( i = 0; i < this.assertions.length; i++ ) { + assertion = this.assertions[i]; + + li = document.createElement( "li" ); + li.className = assertion.result ? "pass" : "fail"; + li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" ); + ol.appendChild( li ); + + if ( assertion.result ) { + good++; + } else { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + + // store result when possible + if ( QUnit.config.reorder && defined.sessionStorage ) { + if ( bad ) { + sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad ); + } else { + sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName ); + } + } + + if ( bad === 0 ) { + addClass( ol, "qunit-collapsed" ); + } + + // `b` initialized at top of scope + b = document.createElement( "strong" ); + b.innerHTML = this.nameHtml + " (" + bad + ", " + good + ", " + this.assertions.length + ")"; + + addEvent(b, "click", function() { + var next = b.parentNode.lastChild, + collapsed = hasClass( next, "qunit-collapsed" ); + ( collapsed ? removeClass : addClass )( next, "qunit-collapsed" ); + }); + + addEvent(b, "dblclick", function( e ) { + var target = e && e.target ? e.target : window.event.srcElement; + if ( target.nodeName.toLowerCase() === "span" || target.nodeName.toLowerCase() === "b" ) { + target = target.parentNode; + } + if ( window.location && target.nodeName.toLowerCase() === "strong" ) { + window.location = QUnit.url({ testNumber: test.testNumber }); + } + }); + + // `time` initialized at top of scope + time = document.createElement( "span" ); + time.className = "runtime"; + time.innerHTML = this.runtime + " ms"; + + // `li` initialized at top of scope + li = id( this.id ); + li.className = bad ? "fail" : "pass"; + li.removeChild( li.firstChild ); + a = li.firstChild; + li.appendChild( b ); + li.appendChild( a ); + li.appendChild( time ); + li.appendChild( ol ); + + } else { + for ( i = 0; i < this.assertions.length; i++ ) { + if ( !this.assertions[i].result ) { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + } + + runLoggingCallbacks( "testDone", QUnit, { + name: this.testName, + module: this.module, + failed: bad, + passed: this.assertions.length - bad, + total: this.assertions.length, + duration: this.runtime + }); + + QUnit.reset(); + + config.current = undefined; + }, + + queue: function() { + var bad, + test = this; + + synchronize(function() { + test.init(); + }); + function run() { + // each of these can by async + synchronize(function() { + test.setup(); + }); + synchronize(function() { + test.run(); + }); + synchronize(function() { + test.teardown(); + }); + synchronize(function() { + test.finish(); + }); + } + + // `bad` initialized at top of scope + // defer when previous test run passed, if storage is available + bad = QUnit.config.reorder && defined.sessionStorage && + +sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName ); + + if ( bad ) { + run(); + } else { + synchronize( run, true ); + } + } +}; + +// Root QUnit object. +// `QUnit` initialized at top of scope +QUnit = { + + // call on start of module test to prepend name to all tests + module: function( name, testEnvironment ) { + config.currentModule = name; + config.currentModuleTestEnvironment = testEnvironment; + config.modules[name] = true; + }, + + asyncTest: function( testName, expected, callback ) { + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + + QUnit.test( testName, expected, callback, true ); + }, + + test: function( testName, expected, callback, async ) { + var test, + nameHtml = "" + escapeText( testName ) + ""; + + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + + if ( config.currentModule ) { + nameHtml = "" + escapeText( config.currentModule ) + ": " + nameHtml; + } + + test = new Test({ + nameHtml: nameHtml, + testName: testName, + expected: expected, + async: async, + callback: callback, + module: config.currentModule, + moduleTestEnvironment: config.currentModuleTestEnvironment, + stack: sourceFromStacktrace( 2 ) + }); + + if ( !validTest( test ) ) { + return; + } + + test.queue(); + }, + + // Specify the number of expected assertions to guarantee that failed test (no assertions are run at all) don't slip through. + expect: function( asserts ) { + if (arguments.length === 1) { + config.current.expected = asserts; + } else { + return config.current.expected; + } + }, + + start: function( count ) { + // QUnit hasn't been initialized yet. + // Note: RequireJS (et al) may delay onLoad + if ( config.semaphore === undefined ) { + QUnit.begin(function() { + // This is triggered at the top of QUnit.load, push start() to the event loop, to allow QUnit.load to finish first + setTimeout(function() { + QUnit.start( count ); + }); + }); + return; + } + + config.semaphore -= count || 1; + // don't start until equal number of stop-calls + if ( config.semaphore > 0 ) { + return; + } + // ignore if start is called more often then stop + if ( config.semaphore < 0 ) { + config.semaphore = 0; + QUnit.pushFailure( "Called start() while already started (QUnit.config.semaphore was 0 already)", null, sourceFromStacktrace(2) ); + return; + } + // A slight delay, to avoid any current callbacks + if ( defined.setTimeout ) { + setTimeout(function() { + if ( config.semaphore > 0 ) { + return; + } + if ( config.timeout ) { + clearTimeout( config.timeout ); + } + + config.blocking = false; + process( true ); + }, 13); + } else { + config.blocking = false; + process( true ); + } + }, + + stop: function( count ) { + config.semaphore += count || 1; + config.blocking = true; + + if ( config.testTimeout && defined.setTimeout ) { + clearTimeout( config.timeout ); + config.timeout = setTimeout(function() { + QUnit.ok( false, "Test timed out" ); + config.semaphore = 1; + QUnit.start(); + }, config.testTimeout ); + } + } +}; + +// `assert` initialized at top of scope +// Assert helpers +// All of these must either call QUnit.push() or manually do: +// - runLoggingCallbacks( "log", .. ); +// - config.current.assertions.push({ .. }); +// We attach it to the QUnit object *after* we expose the public API, +// otherwise `assert` will become a global variable in browsers (#341). +assert = { + /** + * Asserts rough true-ish result. + * @name ok + * @function + * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); + */ + ok: function( result, msg ) { + if ( !config.current ) { + throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) ); + } + result = !!result; + msg = msg || (result ? "okay" : "failed" ); + + var source, + details = { + module: config.current.module, + name: config.current.testName, + result: result, + message: msg + }; + + msg = "" + escapeText( msg ) + ""; + + if ( !result ) { + source = sourceFromStacktrace( 2 ); + if ( source ) { + details.source = source; + msg += "
          Source:
          " + escapeText( source ) + "
          "; + } + } + runLoggingCallbacks( "log", QUnit, details ); + config.current.assertions.push({ + result: result, + message: msg + }); + }, + + /** + * Assert that the first two arguments are equal, with an optional message. + * Prints out both actual and expected values. + * @name equal + * @function + * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" ); + */ + equal: function( actual, expected, message ) { + /*jshint eqeqeq:false */ + QUnit.push( expected == actual, actual, expected, message ); + }, + + /** + * @name notEqual + * @function + */ + notEqual: function( actual, expected, message ) { + /*jshint eqeqeq:false */ + QUnit.push( expected != actual, actual, expected, message ); + }, + + /** + * @name propEqual + * @function + */ + propEqual: function( actual, expected, message ) { + actual = objectValues(actual); + expected = objectValues(expected); + QUnit.push( QUnit.equiv(actual, expected), actual, expected, message ); + }, + + /** + * @name notPropEqual + * @function + */ + notPropEqual: function( actual, expected, message ) { + actual = objectValues(actual); + expected = objectValues(expected); + QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message ); + }, + + /** + * @name deepEqual + * @function + */ + deepEqual: function( actual, expected, message ) { + QUnit.push( QUnit.equiv(actual, expected), actual, expected, message ); + }, + + /** + * @name notDeepEqual + * @function + */ + notDeepEqual: function( actual, expected, message ) { + QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message ); + }, + + /** + * @name strictEqual + * @function + */ + strictEqual: function( actual, expected, message ) { + QUnit.push( expected === actual, actual, expected, message ); + }, + + /** + * @name notStrictEqual + * @function + */ + notStrictEqual: function( actual, expected, message ) { + QUnit.push( expected !== actual, actual, expected, message ); + }, + + "throws": function( block, expected, message ) { + var actual, + expectedOutput = expected, + ok = false; + + // 'expected' is optional + if ( typeof expected === "string" ) { + message = expected; + expected = null; + } + + config.current.ignoreGlobalErrors = true; + try { + block.call( config.current.testEnvironment ); + } catch (e) { + actual = e; + } + config.current.ignoreGlobalErrors = false; + + if ( actual ) { + // we don't want to validate thrown error + if ( !expected ) { + ok = true; + expectedOutput = null; + // expected is a regexp + } else if ( QUnit.objectType( expected ) === "regexp" ) { + ok = expected.test( errorString( actual ) ); + // expected is a constructor + } else if ( actual instanceof expected ) { + ok = true; + // expected is a validation function which returns true is validation passed + } else if ( expected.call( {}, actual ) === true ) { + expectedOutput = null; + ok = true; + } + + QUnit.push( ok, actual, expectedOutput, message ); + } else { + QUnit.pushFailure( message, null, "No exception was thrown." ); + } + } +}; + +/** + * @deprecated since 1.8.0 + * Kept assertion helpers in root for backwards compatibility. + */ +extend( QUnit, assert ); + +/** + * @deprecated since 1.9.0 + * Kept root "raises()" for backwards compatibility. + * (Note that we don't introduce assert.raises). + */ +QUnit.raises = assert[ "throws" ]; + +/** + * @deprecated since 1.0.0, replaced with error pushes since 1.3.0 + * Kept to avoid TypeErrors for undefined methods. + */ +QUnit.equals = function() { + QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" ); +}; +QUnit.same = function() { + QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" ); +}; + +// We want access to the constructor's prototype +(function() { + function F() {} + F.prototype = QUnit; + QUnit = new F(); + // Make F QUnit's constructor so that we can add to the prototype later + QUnit.constructor = F; +}()); + +/** + * Config object: Maintain internal state + * Later exposed as QUnit.config + * `config` initialized at top of scope + */ +config = { + // The queue of tests to run + queue: [], + + // block until document ready + blocking: true, + + // when enabled, show only failing tests + // gets persisted through sessionStorage and can be changed in UI via checkbox + hidepassed: false, + + // by default, run previously failed tests first + // very useful in combination with "Hide passed tests" checked + reorder: true, + + // by default, modify document.title when suite is done + altertitle: true, + + // when enabled, all tests must call expect() + requireExpects: false, + + // add checkboxes that are persisted in the query-string + // when enabled, the id is set to `true` as a `QUnit.config` property + urlConfig: [ + { + id: "noglobals", + label: "Check for Globals", + tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings." + }, + { + id: "notrycatch", + label: "No try-catch", + tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings." + } + ], + + // Set of all modules. + modules: {}, + + // logging callback queues + begin: [], + done: [], + log: [], + testStart: [], + testDone: [], + moduleStart: [], + moduleDone: [] +}; + +// Export global variables, unless an 'exports' object exists, +// in that case we assume we're in CommonJS (dealt with on the bottom of the script) +if ( typeof exports === "undefined" ) { + extend( window, QUnit.constructor.prototype ); + + // Expose QUnit object + window.QUnit = QUnit; +} + +// Initialize more QUnit.config and QUnit.urlParams +(function() { + var i, + location = window.location || { search: "", protocol: "file:" }, + params = location.search.slice( 1 ).split( "&" ), + length = params.length, + urlParams = {}, + current; + + if ( params[ 0 ] ) { + for ( i = 0; i < length; i++ ) { + current = params[ i ].split( "=" ); + current[ 0 ] = decodeURIComponent( current[ 0 ] ); + // allow just a key to turn on a flag, e.g., test.html?noglobals + current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true; + urlParams[ current[ 0 ] ] = current[ 1 ]; + } + } + + QUnit.urlParams = urlParams; + + // String search anywhere in moduleName+testName + config.filter = urlParams.filter; + + // Exact match of the module name + config.module = urlParams.module; + + config.testNumber = parseInt( urlParams.testNumber, 10 ) || null; + + // Figure out if we're running the tests from a server or not + QUnit.isLocal = location.protocol === "file:"; +}()); + +// Extend QUnit object, +// these after set here because they should not be exposed as global functions +extend( QUnit, { + assert: assert, + + config: config, + + // Initialize the configuration options + init: function() { + extend( config, { + stats: { all: 0, bad: 0 }, + moduleStats: { all: 0, bad: 0 }, + started: +new Date(), + updateRate: 1000, + blocking: false, + autostart: true, + autorun: false, + filter: "", + queue: [], + semaphore: 1 + }); + + var tests, banner, result, + qunit = id( "qunit" ); + + if ( qunit ) { + qunit.innerHTML = + "

          " + escapeText( document.title ) + "

          " + + "

          " + + "
          " + + "

          " + + "
            "; + } + + tests = id( "qunit-tests" ); + banner = id( "qunit-banner" ); + result = id( "qunit-testresult" ); + + if ( tests ) { + tests.innerHTML = ""; + } + + if ( banner ) { + banner.className = ""; + } + + if ( result ) { + result.parentNode.removeChild( result ); + } + + if ( tests ) { + result = document.createElement( "p" ); + result.id = "qunit-testresult"; + result.className = "result"; + tests.parentNode.insertBefore( result, tests ); + result.innerHTML = "Running...
             "; + } + }, + + // Resets the test setup. Useful for tests that modify the DOM. + /* + DEPRECATED: Use multiple tests instead of resetting inside a test. + Use testStart or testDone for custom cleanup. + This method will throw an error in 2.0, and will be removed in 2.1 + */ + reset: function() { + var fixture = id( "qunit-fixture" ); + if ( fixture ) { + fixture.innerHTML = config.fixture; + } + }, + + // Trigger an event on an element. + // @example triggerEvent( document.body, "click" ); + triggerEvent: function( elem, type, event ) { + if ( document.createEvent ) { + event = document.createEvent( "MouseEvents" ); + event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView, + 0, 0, 0, 0, 0, false, false, false, false, 0, null); + + elem.dispatchEvent( event ); + } else if ( elem.fireEvent ) { + elem.fireEvent( "on" + type ); + } + }, + + // Safe object type checking + is: function( type, obj ) { + return QUnit.objectType( obj ) === type; + }, + + objectType: function( obj ) { + if ( typeof obj === "undefined" ) { + return "undefined"; + // consider: typeof null === object + } + if ( obj === null ) { + return "null"; + } + + var match = toString.call( obj ).match(/^\[object\s(.*)\]$/), + type = match && match[1] || ""; + + switch ( type ) { + case "Number": + if ( isNaN(obj) ) { + return "nan"; + } + return "number"; + case "String": + case "Boolean": + case "Array": + case "Date": + case "RegExp": + case "Function": + return type.toLowerCase(); + } + if ( typeof obj === "object" ) { + return "object"; + } + return undefined; + }, + + push: function( result, actual, expected, message ) { + if ( !config.current ) { + throw new Error( "assertion outside test context, was " + sourceFromStacktrace() ); + } + + var output, source, + details = { + module: config.current.module, + name: config.current.testName, + result: result, + message: message, + actual: actual, + expected: expected + }; + + message = escapeText( message ) || ( result ? "okay" : "failed" ); + message = "" + message + ""; + output = message; + + if ( !result ) { + expected = escapeText( QUnit.jsDump.parse(expected) ); + actual = escapeText( QUnit.jsDump.parse(actual) ); + output += ""; + + if ( actual !== expected ) { + output += ""; + output += ""; + } + + source = sourceFromStacktrace(); + + if ( source ) { + details.source = source; + output += ""; + } + + output += "
            Expected:
            " + expected + "
            Result:
            " + actual + "
            Diff:
            " + QUnit.diff( expected, actual ) + "
            Source:
            " + escapeText( source ) + "
            "; + } + + runLoggingCallbacks( "log", QUnit, details ); + + config.current.assertions.push({ + result: !!result, + message: output + }); + }, + + pushFailure: function( message, source, actual ) { + if ( !config.current ) { + throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) ); + } + + var output, + details = { + module: config.current.module, + name: config.current.testName, + result: false, + message: message + }; + + message = escapeText( message ) || "error"; + message = "" + message + ""; + output = message; + + output += ""; + + if ( actual ) { + output += ""; + } + + if ( source ) { + details.source = source; + output += ""; + } + + output += "
            Result:
            " + escapeText( actual ) + "
            Source:
            " + escapeText( source ) + "
            "; + + runLoggingCallbacks( "log", QUnit, details ); + + config.current.assertions.push({ + result: false, + message: output + }); + }, + + url: function( params ) { + params = extend( extend( {}, QUnit.urlParams ), params ); + var key, + querystring = "?"; + + for ( key in params ) { + if ( hasOwn.call( params, key ) ) { + querystring += encodeURIComponent( key ) + "=" + + encodeURIComponent( params[ key ] ) + "&"; + } + } + return window.location.protocol + "//" + window.location.host + + window.location.pathname + querystring.slice( 0, -1 ); + }, + + extend: extend, + id: id, + addEvent: addEvent, + addClass: addClass, + hasClass: hasClass, + removeClass: removeClass + // load, equiv, jsDump, diff: Attached later +}); + +/** + * @deprecated: Created for backwards compatibility with test runner that set the hook function + * into QUnit.{hook}, instead of invoking it and passing the hook function. + * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here. + * Doing this allows us to tell if the following methods have been overwritten on the actual + * QUnit object. + */ +extend( QUnit.constructor.prototype, { + + // Logging callbacks; all receive a single argument with the listed properties + // run test/logs.html for any related changes + begin: registerLoggingCallback( "begin" ), + + // done: { failed, passed, total, runtime } + done: registerLoggingCallback( "done" ), + + // log: { result, actual, expected, message } + log: registerLoggingCallback( "log" ), + + // testStart: { name } + testStart: registerLoggingCallback( "testStart" ), + + // testDone: { name, failed, passed, total, duration } + testDone: registerLoggingCallback( "testDone" ), + + // moduleStart: { name } + moduleStart: registerLoggingCallback( "moduleStart" ), + + // moduleDone: { name, failed, passed, total } + moduleDone: registerLoggingCallback( "moduleDone" ) +}); + +if ( typeof document === "undefined" || document.readyState === "complete" ) { + config.autorun = true; +} + +QUnit.load = function() { + runLoggingCallbacks( "begin", QUnit, {} ); + + // Initialize the config, saving the execution queue + var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, + urlConfigCheckboxesContainer, urlConfigCheckboxes, moduleFilter, + numModules = 0, + moduleNames = [], + moduleFilterHtml = "", + urlConfigHtml = "", + oldconfig = extend( {}, config ); + + QUnit.init(); + extend(config, oldconfig); + + config.blocking = false; + + len = config.urlConfig.length; + + for ( i = 0; i < len; i++ ) { + val = config.urlConfig[i]; + if ( typeof val === "string" ) { + val = { + id: val, + label: val, + tooltip: "[no tooltip available]" + }; + } + config[ val.id ] = QUnit.urlParams[ val.id ]; + urlConfigHtml += ""; + } + for ( i in config.modules ) { + if ( config.modules.hasOwnProperty( i ) ) { + moduleNames.push(i); + } + } + numModules = moduleNames.length; + moduleNames.sort( function( a, b ) { + return a.localeCompare( b ); + }); + moduleFilterHtml += ""; + + // `userAgent` initialized at top of scope + userAgent = id( "qunit-userAgent" ); + if ( userAgent ) { + userAgent.innerHTML = navigator.userAgent; + } + + // `banner` initialized at top of scope + banner = id( "qunit-header" ); + if ( banner ) { + banner.innerHTML = "" + banner.innerHTML + " "; + } + + // `toolbar` initialized at top of scope + toolbar = id( "qunit-testrunner-toolbar" ); + if ( toolbar ) { + // `filter` initialized at top of scope + filter = document.createElement( "input" ); + filter.type = "checkbox"; + filter.id = "qunit-filter-pass"; + + addEvent( filter, "click", function() { + var tmp, + ol = document.getElementById( "qunit-tests" ); + + if ( filter.checked ) { + ol.className = ol.className + " hidepass"; + } else { + tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " "; + ol.className = tmp.replace( / hidepass /, " " ); + } + if ( defined.sessionStorage ) { + if (filter.checked) { + sessionStorage.setItem( "qunit-filter-passed-tests", "true" ); + } else { + sessionStorage.removeItem( "qunit-filter-passed-tests" ); + } + } + }); + + if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) { + filter.checked = true; + // `ol` initialized at top of scope + ol = document.getElementById( "qunit-tests" ); + ol.className = ol.className + " hidepass"; + } + toolbar.appendChild( filter ); + + // `label` initialized at top of scope + label = document.createElement( "label" ); + label.setAttribute( "for", "qunit-filter-pass" ); + label.setAttribute( "title", "Only show tests and assertions that fail. Stored in sessionStorage." ); + label.innerHTML = "Hide passed tests"; + toolbar.appendChild( label ); + + urlConfigCheckboxesContainer = document.createElement("span"); + urlConfigCheckboxesContainer.innerHTML = urlConfigHtml; + urlConfigCheckboxes = urlConfigCheckboxesContainer.getElementsByTagName("input"); + // For oldIE support: + // * Add handlers to the individual elements instead of the container + // * Use "click" instead of "change" + // * Fallback from event.target to event.srcElement + addEvents( urlConfigCheckboxes, "click", function( event ) { + var params = {}, + target = event.target || event.srcElement; + params[ target.name ] = target.checked ? true : undefined; + window.location = QUnit.url( params ); + }); + toolbar.appendChild( urlConfigCheckboxesContainer ); + + if (numModules > 1) { + moduleFilter = document.createElement( "span" ); + moduleFilter.setAttribute( "id", "qunit-modulefilter-container" ); + moduleFilter.innerHTML = moduleFilterHtml; + addEvent( moduleFilter.lastChild, "change", function() { + var selectBox = moduleFilter.getElementsByTagName("select")[0], + selectedModule = decodeURIComponent(selectBox.options[selectBox.selectedIndex].value); + + window.location = QUnit.url({ + module: ( selectedModule === "" ) ? undefined : selectedModule, + // Remove any existing filters + filter: undefined, + testNumber: undefined + }); + }); + toolbar.appendChild(moduleFilter); + } + } + + // `main` initialized at top of scope + main = id( "qunit-fixture" ); + if ( main ) { + config.fixture = main.innerHTML; + } + + if ( config.autostart ) { + QUnit.start(); + } +}; + +addEvent( window, "load", QUnit.load ); + +// `onErrorFnPrev` initialized at top of scope +// Preserve other handlers +onErrorFnPrev = window.onerror; + +// Cover uncaught exceptions +// Returning true will suppress the default browser handler, +// returning false will let it run. +window.onerror = function ( error, filePath, linerNr ) { + var ret = false; + if ( onErrorFnPrev ) { + ret = onErrorFnPrev( error, filePath, linerNr ); + } + + // Treat return value as window.onerror itself does, + // Only do our handling if not suppressed. + if ( ret !== true ) { + if ( QUnit.config.current ) { + if ( QUnit.config.current.ignoreGlobalErrors ) { + return true; + } + QUnit.pushFailure( error, filePath + ":" + linerNr ); + } else { + QUnit.test( "global failure", extend( function() { + QUnit.pushFailure( error, filePath + ":" + linerNr ); + }, { validTest: validTest } ) ); + } + return false; + } + + return ret; +}; + +function done() { + config.autorun = true; + + // Log the last module results + if ( config.currentModule ) { + runLoggingCallbacks( "moduleDone", QUnit, { + name: config.currentModule, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all + }); + } + delete config.previousModule; + + var i, key, + banner = id( "qunit-banner" ), + tests = id( "qunit-tests" ), + runtime = +new Date() - config.started, + passed = config.stats.all - config.stats.bad, + html = [ + "Tests completed in ", + runtime, + " milliseconds.
            ", + "", + passed, + " assertions of ", + config.stats.all, + " passed, ", + config.stats.bad, + " failed." + ].join( "" ); + + if ( banner ) { + banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" ); + } + + if ( tests ) { + id( "qunit-testresult" ).innerHTML = html; + } + + if ( config.altertitle && typeof document !== "undefined" && document.title ) { + // show ✖ for good, ✔ for bad suite result in title + // use escape sequences in case file gets loaded with non-utf-8-charset + document.title = [ + ( config.stats.bad ? "\u2716" : "\u2714" ), + document.title.replace( /^[\u2714\u2716] /i, "" ) + ].join( " " ); + } + + // clear own sessionStorage items if all tests passed + if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) { + // `key` & `i` initialized at top of scope + for ( i = 0; i < sessionStorage.length; i++ ) { + key = sessionStorage.key( i++ ); + if ( key.indexOf( "qunit-test-" ) === 0 ) { + sessionStorage.removeItem( key ); + } + } + } + + // scroll back to top to show results + if ( window.scrollTo ) { + window.scrollTo(0, 0); + } + + runLoggingCallbacks( "done", QUnit, { + failed: config.stats.bad, + passed: passed, + total: config.stats.all, + runtime: runtime + }); +} + +/** @return Boolean: true if this test should be ran */ +function validTest( test ) { + var include, + filter = config.filter && config.filter.toLowerCase(), + module = config.module && config.module.toLowerCase(), + fullName = (test.module + ": " + test.testName).toLowerCase(); + + // Internally-generated tests are always valid + if ( test.callback && test.callback.validTest === validTest ) { + delete test.callback.validTest; + return true; + } + + if ( config.testNumber ) { + return test.testNumber === config.testNumber; + } + + if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) { + return false; + } + + if ( !filter ) { + return true; + } + + include = filter.charAt( 0 ) !== "!"; + if ( !include ) { + filter = filter.slice( 1 ); + } + + // If the filter matches, we need to honour include + if ( fullName.indexOf( filter ) !== -1 ) { + return include; + } + + // Otherwise, do the opposite + return !include; +} + +// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions) +// Later Safari and IE10 are supposed to support error.stack as well +// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack +function extractStacktrace( e, offset ) { + offset = offset === undefined ? 3 : offset; + + var stack, include, i; + + if ( e.stacktrace ) { + // Opera + return e.stacktrace.split( "\n" )[ offset + 3 ]; + } else if ( e.stack ) { + // Firefox, Chrome + stack = e.stack.split( "\n" ); + if (/^error$/i.test( stack[0] ) ) { + stack.shift(); + } + if ( fileName ) { + include = []; + for ( i = offset; i < stack.length; i++ ) { + if ( stack[ i ].indexOf( fileName ) !== -1 ) { + break; + } + include.push( stack[ i ] ); + } + if ( include.length ) { + return include.join( "\n" ); + } + } + return stack[ offset ]; + } else if ( e.sourceURL ) { + // Safari, PhantomJS + // hopefully one day Safari provides actual stacktraces + // exclude useless self-reference for generated Error objects + if ( /qunit.js$/.test( e.sourceURL ) ) { + return; + } + // for actual exceptions, this is useful + return e.sourceURL + ":" + e.line; + } +} +function sourceFromStacktrace( offset ) { + try { + throw new Error(); + } catch ( e ) { + return extractStacktrace( e, offset ); + } +} + +/** + * Escape text for attribute or text content. + */ +function escapeText( s ) { + if ( !s ) { + return ""; + } + s = s + ""; + // Both single quotes and double quotes (for attributes) + return s.replace( /['"<>&]/g, function( s ) { + switch( s ) { + case "'": + return "'"; + case "\"": + return """; + case "<": + return "<"; + case ">": + return ">"; + case "&": + return "&"; + } + }); +} + +function synchronize( callback, last ) { + config.queue.push( callback ); + + if ( config.autorun && !config.blocking ) { + process( last ); + } +} + +function process( last ) { + function next() { + process( last ); + } + var start = new Date().getTime(); + config.depth = config.depth ? config.depth + 1 : 1; + + while ( config.queue.length && !config.blocking ) { + if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) { + config.queue.shift()(); + } else { + setTimeout( next, 13 ); + break; + } + } + config.depth--; + if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) { + done(); + } +} + +function saveGlobal() { + config.pollution = []; + + if ( config.noglobals ) { + for ( var key in window ) { + if ( hasOwn.call( window, key ) ) { + // in Opera sometimes DOM element ids show up here, ignore them + if ( /^qunit-test-output/.test( key ) ) { + continue; + } + config.pollution.push( key ); + } + } + } +} + +function checkPollution() { + var newGlobals, + deletedGlobals, + old = config.pollution; + + saveGlobal(); + + newGlobals = diff( config.pollution, old ); + if ( newGlobals.length > 0 ) { + QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") ); + } + + deletedGlobals = diff( old, config.pollution ); + if ( deletedGlobals.length > 0 ) { + QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") ); + } +} + +// returns a new Array with the elements that are in a but not in b +function diff( a, b ) { + var i, j, + result = a.slice(); + + for ( i = 0; i < result.length; i++ ) { + for ( j = 0; j < b.length; j++ ) { + if ( result[i] === b[j] ) { + result.splice( i, 1 ); + i--; + break; + } + } + } + return result; +} + +function extend( a, b ) { + for ( var prop in b ) { + if ( hasOwn.call( b, prop ) ) { + // Avoid "Member not found" error in IE8 caused by messing with window.constructor + if ( !( prop === "constructor" && a === window ) ) { + if ( b[ prop ] === undefined ) { + delete a[ prop ]; + } else { + a[ prop ] = b[ prop ]; + } + } + } + } + + return a; +} + +/** + * @param {HTMLElement} elem + * @param {string} type + * @param {Function} fn + */ +function addEvent( elem, type, fn ) { + // Standards-based browsers + if ( elem.addEventListener ) { + elem.addEventListener( type, fn, false ); + // IE + } else { + elem.attachEvent( "on" + type, fn ); + } +} + +/** + * @param {Array|NodeList} elems + * @param {string} type + * @param {Function} fn + */ +function addEvents( elems, type, fn ) { + var i = elems.length; + while ( i-- ) { + addEvent( elems[i], type, fn ); + } +} + +function hasClass( elem, name ) { + return (" " + elem.className + " ").indexOf(" " + name + " ") > -1; +} + +function addClass( elem, name ) { + if ( !hasClass( elem, name ) ) { + elem.className += (elem.className ? " " : "") + name; + } +} + +function removeClass( elem, name ) { + var set = " " + elem.className + " "; + // Class name may appear multiple times + while ( set.indexOf(" " + name + " ") > -1 ) { + set = set.replace(" " + name + " " , " "); + } + // If possible, trim it for prettiness, but not necessarily + elem.className = typeof set.trim === "function" ? set.trim() : set.replace(/^\s+|\s+$/g, ""); +} + +function id( name ) { + return !!( typeof document !== "undefined" && document && document.getElementById ) && + document.getElementById( name ); +} + +function registerLoggingCallback( key ) { + return function( callback ) { + config[key].push( callback ); + }; +} + +// Supports deprecated method of completely overwriting logging callbacks +function runLoggingCallbacks( key, scope, args ) { + var i, callbacks; + if ( QUnit.hasOwnProperty( key ) ) { + QUnit[ key ].call(scope, args ); + } else { + callbacks = config[ key ]; + for ( i = 0; i < callbacks.length; i++ ) { + callbacks[ i ].call( scope, args ); + } + } +} + +// Test for equality any JavaScript type. +// Author: Philippe Rathé +QUnit.equiv = (function() { + + // Call the o related callback with the given arguments. + function bindCallbacks( o, callbacks, args ) { + var prop = QUnit.objectType( o ); + if ( prop ) { + if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) { + return callbacks[ prop ].apply( callbacks, args ); + } else { + return callbacks[ prop ]; // or undefined + } + } + } + + // the real equiv function + var innerEquiv, + // stack to decide between skip/abort functions + callers = [], + // stack to avoiding loops from circular referencing + parents = [], + parentsB = [], + + getProto = Object.getPrototypeOf || function ( obj ) { + /*jshint camelcase:false */ + return obj.__proto__; + }, + callbacks = (function () { + + // for string, boolean, number and null + function useStrictEquality( b, a ) { + /*jshint eqeqeq:false */ + if ( b instanceof a.constructor || a instanceof b.constructor ) { + // to catch short annotation VS 'new' annotation of a + // declaration + // e.g. var i = 1; + // var j = new Number(1); + return a == b; + } else { + return a === b; + } + } + + return { + "string": useStrictEquality, + "boolean": useStrictEquality, + "number": useStrictEquality, + "null": useStrictEquality, + "undefined": useStrictEquality, + + "nan": function( b ) { + return isNaN( b ); + }, + + "date": function( b, a ) { + return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf(); + }, + + "regexp": function( b, a ) { + return QUnit.objectType( b ) === "regexp" && + // the regex itself + a.source === b.source && + // and its modifiers + a.global === b.global && + // (gmi) ... + a.ignoreCase === b.ignoreCase && + a.multiline === b.multiline && + a.sticky === b.sticky; + }, + + // - skip when the property is a method of an instance (OOP) + // - abort otherwise, + // initial === would have catch identical references anyway + "function": function() { + var caller = callers[callers.length - 1]; + return caller !== Object && typeof caller !== "undefined"; + }, + + "array": function( b, a ) { + var i, j, len, loop, aCircular, bCircular; + + // b could be an object literal here + if ( QUnit.objectType( b ) !== "array" ) { + return false; + } + + len = a.length; + if ( len !== b.length ) { + // safe and faster + return false; + } + + // track reference to avoid circular references + parents.push( a ); + parentsB.push( b ); + for ( i = 0; i < len; i++ ) { + loop = false; + for ( j = 0; j < parents.length; j++ ) { + aCircular = parents[j] === a[i]; + bCircular = parentsB[j] === b[i]; + if ( aCircular || bCircular ) { + if ( a[i] === b[i] || aCircular && bCircular ) { + loop = true; + } else { + parents.pop(); + parentsB.pop(); + return false; + } + } + } + if ( !loop && !innerEquiv(a[i], b[i]) ) { + parents.pop(); + parentsB.pop(); + return false; + } + } + parents.pop(); + parentsB.pop(); + return true; + }, + + "object": function( b, a ) { + /*jshint forin:false */ + var i, j, loop, aCircular, bCircular, + // Default to true + eq = true, + aProperties = [], + bProperties = []; + + // comparing constructors is more strict than using + // instanceof + if ( a.constructor !== b.constructor ) { + // Allow objects with no prototype to be equivalent to + // objects with Object as their constructor. + if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) || + ( getProto(b) === null && getProto(a) === Object.prototype ) ) ) { + return false; + } + } + + // stack constructor before traversing properties + callers.push( a.constructor ); + + // track reference to avoid circular references + parents.push( a ); + parentsB.push( b ); + + // be strict: don't ensure hasOwnProperty and go deep + for ( i in a ) { + loop = false; + for ( j = 0; j < parents.length; j++ ) { + aCircular = parents[j] === a[i]; + bCircular = parentsB[j] === b[i]; + if ( aCircular || bCircular ) { + if ( a[i] === b[i] || aCircular && bCircular ) { + loop = true; + } else { + eq = false; + break; + } + } + } + aProperties.push(i); + if ( !loop && !innerEquiv(a[i], b[i]) ) { + eq = false; + break; + } + } + + parents.pop(); + parentsB.pop(); + callers.pop(); // unstack, we are done + + for ( i in b ) { + bProperties.push( i ); // collect b's properties + } + + // Ensures identical properties name + return eq && innerEquiv( aProperties.sort(), bProperties.sort() ); + } + }; + }()); + + innerEquiv = function() { // can take multiple arguments + var args = [].slice.apply( arguments ); + if ( args.length < 2 ) { + return true; // end transition + } + + return (function( a, b ) { + if ( a === b ) { + return true; // catch the most you can + } else if ( a === null || b === null || typeof a === "undefined" || + typeof b === "undefined" || + QUnit.objectType(a) !== QUnit.objectType(b) ) { + return false; // don't lose time with error prone cases + } else { + return bindCallbacks(a, callbacks, [ b, a ]); + } + + // apply transition with (1..n) arguments + }( args[0], args[1] ) && innerEquiv.apply( this, args.splice(1, args.length - 1 )) ); + }; + + return innerEquiv; +}()); + +/** + * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | + * http://flesler.blogspot.com Licensed under BSD + * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008 + * + * @projectDescription Advanced and extensible data dumping for Javascript. + * @version 1.0.0 + * @author Ariel Flesler + * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html} + */ +QUnit.jsDump = (function() { + function quote( str ) { + return "\"" + str.toString().replace( /"/g, "\\\"" ) + "\""; + } + function literal( o ) { + return o + ""; + } + function join( pre, arr, post ) { + var s = jsDump.separator(), + base = jsDump.indent(), + inner = jsDump.indent(1); + if ( arr.join ) { + arr = arr.join( "," + s + inner ); + } + if ( !arr ) { + return pre + post; + } + return [ pre, inner + arr, base + post ].join(s); + } + function array( arr, stack ) { + var i = arr.length, ret = new Array(i); + this.up(); + while ( i-- ) { + ret[i] = this.parse( arr[i] , undefined , stack); + } + this.down(); + return join( "[", ret, "]" ); + } + + var reName = /^function (\w+)/, + jsDump = { + // type is used mostly internally, you can fix a (custom)type in advance + parse: function( obj, type, stack ) { + stack = stack || [ ]; + var inStack, res, + parser = this.parsers[ type || this.typeOf(obj) ]; + + type = typeof parser; + inStack = inArray( obj, stack ); + + if ( inStack !== -1 ) { + return "recursion(" + (inStack - stack.length) + ")"; + } + if ( type === "function" ) { + stack.push( obj ); + res = parser.call( this, obj, stack ); + stack.pop(); + return res; + } + return ( type === "string" ) ? parser : this.parsers.error; + }, + typeOf: function( obj ) { + var type; + if ( obj === null ) { + type = "null"; + } else if ( typeof obj === "undefined" ) { + type = "undefined"; + } else if ( QUnit.is( "regexp", obj) ) { + type = "regexp"; + } else if ( QUnit.is( "date", obj) ) { + type = "date"; + } else if ( QUnit.is( "function", obj) ) { + type = "function"; + } else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) { + type = "window"; + } else if ( obj.nodeType === 9 ) { + type = "document"; + } else if ( obj.nodeType ) { + type = "node"; + } else if ( + // native arrays + toString.call( obj ) === "[object Array]" || + // NodeList objects + ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) ) + ) { + type = "array"; + } else if ( obj.constructor === Error.prototype.constructor ) { + type = "error"; + } else { + type = typeof obj; + } + return type; + }, + separator: function() { + return this.multiline ? this.HTML ? "
            " : "\n" : this.HTML ? " " : " "; + }, + // extra can be a number, shortcut for increasing-calling-decreasing + indent: function( extra ) { + if ( !this.multiline ) { + return ""; + } + var chr = this.indentChar; + if ( this.HTML ) { + chr = chr.replace( /\t/g, " " ).replace( / /g, " " ); + } + return new Array( this.depth + ( extra || 0 ) ).join(chr); + }, + up: function( a ) { + this.depth += a || 1; + }, + down: function( a ) { + this.depth -= a || 1; + }, + setParser: function( name, parser ) { + this.parsers[name] = parser; + }, + // The next 3 are exposed so you can use them + quote: quote, + literal: literal, + join: join, + // + depth: 1, + // This is the list of parsers, to modify them, use jsDump.setParser + parsers: { + window: "[Window]", + document: "[Document]", + error: function(error) { + return "Error(\"" + error.message + "\")"; + }, + unknown: "[Unknown]", + "null": "null", + "undefined": "undefined", + "function": function( fn ) { + var ret = "function", + // functions never have name in IE + name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1]; + + if ( name ) { + ret += " " + name; + } + ret += "( "; + + ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" ); + return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" ); + }, + array: array, + nodelist: array, + "arguments": array, + object: function( map, stack ) { + /*jshint forin:false */ + var ret = [ ], keys, key, val, i; + QUnit.jsDump.up(); + keys = []; + for ( key in map ) { + keys.push( key ); + } + keys.sort(); + for ( i = 0; i < keys.length; i++ ) { + key = keys[ i ]; + val = map[ key ]; + ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) ); + } + QUnit.jsDump.down(); + return join( "{", ret, "}" ); + }, + node: function( node ) { + var len, i, val, + open = QUnit.jsDump.HTML ? "<" : "<", + close = QUnit.jsDump.HTML ? ">" : ">", + tag = node.nodeName.toLowerCase(), + ret = open + tag, + attrs = node.attributes; + + if ( attrs ) { + for ( i = 0, len = attrs.length; i < len; i++ ) { + val = attrs[i].nodeValue; + // IE6 includes all attributes in .attributes, even ones not explicitly set. + // Those have values like undefined, null, 0, false, "" or "inherit". + if ( val && val !== "inherit" ) { + ret += " " + attrs[i].nodeName + "=" + QUnit.jsDump.parse( val, "attribute" ); + } + } + } + ret += close; + + // Show content of TextNode or CDATASection + if ( node.nodeType === 3 || node.nodeType === 4 ) { + ret += node.nodeValue; + } + + return ret + open + "/" + tag + close; + }, + // function calls it internally, it's the arguments part of the function + functionArgs: function( fn ) { + var args, + l = fn.length; + + if ( !l ) { + return ""; + } + + args = new Array(l); + while ( l-- ) { + // 97 is 'a' + args[l] = String.fromCharCode(97+l); + } + return " " + args.join( ", " ) + " "; + }, + // object calls it internally, the key part of an item in a map + key: quote, + // function calls it internally, it's the content of the function + functionCode: "[code]", + // node calls it internally, it's an html attribute value + attribute: quote, + string: quote, + date: quote, + regexp: literal, + number: literal, + "boolean": literal + }, + // if true, entities are escaped ( <, >, \t, space and \n ) + HTML: false, + // indentation unit + indentChar: " ", + // if true, items in a collection, are separated by a \n, else just a space. + multiline: true + }; + + return jsDump; +}()); + +// from jquery.js +function inArray( elem, array ) { + if ( array.indexOf ) { + return array.indexOf( elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; +} + +/* + * Javascript Diff Algorithm + * By John Resig (http://ejohn.org/) + * Modified by Chu Alan "sprite" + * + * Released under the MIT license. + * + * More Info: + * http://ejohn.org/projects/javascript-diff-algorithm/ + * + * Usage: QUnit.diff(expected, actual) + * + * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the quick brown fox jumped jumps over" + */ +QUnit.diff = (function() { + /*jshint eqeqeq:false, eqnull:true */ + function diff( o, n ) { + var i, + ns = {}, + os = {}; + + for ( i = 0; i < n.length; i++ ) { + if ( !hasOwn.call( ns, n[i] ) ) { + ns[ n[i] ] = { + rows: [], + o: null + }; + } + ns[ n[i] ].rows.push( i ); + } + + for ( i = 0; i < o.length; i++ ) { + if ( !hasOwn.call( os, o[i] ) ) { + os[ o[i] ] = { + rows: [], + n: null + }; + } + os[ o[i] ].rows.push( i ); + } + + for ( i in ns ) { + if ( hasOwn.call( ns, i ) ) { + if ( ns[i].rows.length === 1 && hasOwn.call( os, i ) && os[i].rows.length === 1 ) { + n[ ns[i].rows[0] ] = { + text: n[ ns[i].rows[0] ], + row: os[i].rows[0] + }; + o[ os[i].rows[0] ] = { + text: o[ os[i].rows[0] ], + row: ns[i].rows[0] + }; + } + } + } + + for ( i = 0; i < n.length - 1; i++ ) { + if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null && + n[ i + 1 ] == o[ n[i].row + 1 ] ) { + + n[ i + 1 ] = { + text: n[ i + 1 ], + row: n[i].row + 1 + }; + o[ n[i].row + 1 ] = { + text: o[ n[i].row + 1 ], + row: i + 1 + }; + } + } + + for ( i = n.length - 1; i > 0; i-- ) { + if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null && + n[ i - 1 ] == o[ n[i].row - 1 ]) { + + n[ i - 1 ] = { + text: n[ i - 1 ], + row: n[i].row - 1 + }; + o[ n[i].row - 1 ] = { + text: o[ n[i].row - 1 ], + row: i - 1 + }; + } + } + + return { + o: o, + n: n + }; + } + + return function( o, n ) { + o = o.replace( /\s+$/, "" ); + n = n.replace( /\s+$/, "" ); + + var i, pre, + str = "", + out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ), + oSpace = o.match(/\s+/g), + nSpace = n.match(/\s+/g); + + if ( oSpace == null ) { + oSpace = [ " " ]; + } + else { + oSpace.push( " " ); + } + + if ( nSpace == null ) { + nSpace = [ " " ]; + } + else { + nSpace.push( " " ); + } + + if ( out.n.length === 0 ) { + for ( i = 0; i < out.o.length; i++ ) { + str += "" + out.o[i] + oSpace[i] + ""; + } + } + else { + if ( out.n[0].text == null ) { + for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) { + str += "" + out.o[n] + oSpace[n] + ""; + } + } + + for ( i = 0; i < out.n.length; i++ ) { + if (out.n[i].text == null) { + str += "" + out.n[i] + nSpace[i] + ""; + } + else { + // `pre` initialized at top of scope + pre = ""; + + for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) { + pre += "" + out.o[n] + oSpace[n] + ""; + } + str += " " + out.n[i].text + nSpace[i] + pre; + } + } + } + + return str; + }; +}()); + +// for CommonJS environments, export everything +if ( typeof exports !== "undefined" ) { + extend( exports, QUnit.constructor.prototype ); +} + +// get at whatever the global object is, like window in browsers +}( (function() {return this;}.call()) )); \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/test/unit/test.js b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/unit/test.js new file mode 100644 index 0000000000..331e9c67d1 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/unit/test.js @@ -0,0 +1,11 @@ +test('basic test', function() { + expect(1); + ok(true, 'this had better work.'); +}); + + +test('can access the DOM', function() { + expect(1); + var fixture = document.getElementById('qunit-fixture'); + equal(fixture.innerText || fixture.textContent, 'this had better work.', 'should be able to access the DOM.'); +}); \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/desktop/index.html b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/desktop/index.html new file mode 100644 index 0000000000..1c3cf0a8aa --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/desktop/index.html @@ -0,0 +1,44 @@ + + + + + Light theme visual tests + + + + + +
            +
            • asdf
            +
            +
              +
            • Node 01 +
                +
              • Node
              • +
              • Node
              • +
              +
            • +
            • Node 02
            • +
            • Node 03 +
                +
              • Node
              • +
              • Node
              • +
              +
            • +
            • Node 04
            • +
            • Node 05
            • +
            +
            +
            • full
            • asdf
            +
            • full
            • asdf
            + + + + + + \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/mobile/index.html b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/mobile/index.html new file mode 100644 index 0000000000..12ba4b85d0 --- /dev/null +++ b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/mobile/index.html @@ -0,0 +1,42 @@ + + + + + Mobile theme visual tests + + + + + +
            +
              +
            • Node 01 +
                +
              • Node
              • +
              • Node
              • +
              +
            • +
            • Node 02
            • +
            • Node 03 +
                +
              • Node
              • +
              • Node
              • +
              +
            • +
            • Node 04
            • +
            • Node 05
            • +
            +
            +
            • full
            • asdf
            +
            • full
            • asdf
            + + + + + + \ No newline at end of file diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/desktop/.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/desktop/.png new file mode 100644 index 0000000000..55ccf189b5 Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/desktop/.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/desktop/desktop.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/desktop/desktop.png new file mode 100644 index 0000000000..d6ececdbd9 Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/desktop/desktop.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/desktop/home.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/desktop/home.png new file mode 100644 index 0000000000..55ccf189b5 Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/desktop/home.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/mobile/.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/mobile/.png new file mode 100644 index 0000000000..c8cd05ad1d Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/mobile/.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/mobile/home.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/mobile/home.png new file mode 100644 index 0000000000..c8cd05ad1d Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/mobile/home.png differ diff --git a/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/mobile/mobile.png b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/mobile/mobile.png new file mode 100644 index 0000000000..dcc76a0064 Binary files /dev/null and b/mayan/apps/cabinets/static/cabinets/packages/jstree/test/visual/screenshots/mobile/mobile.png differ diff --git a/mayan/apps/cabinets/templates/cabinets/cabinet_details.html b/mayan/apps/cabinets/templates/cabinets/cabinet_details.html new file mode 100644 index 0000000000..65098d5b34 --- /dev/null +++ b/mayan/apps/cabinets/templates/cabinets/cabinet_details.html @@ -0,0 +1,57 @@ +{% extends 'appearance/base.html' %} + +{% load i18n %} +{% load static %} + +{% load navigation_tags %} + +{% block title %}{% include 'appearance/calculate_form_title.html' %}{% endblock %} + +{% block stylesheets %} + +{% endblock %} + +{% block content %} + {% if title %} +

            {{ title }}

            +
            + {% endif %} +
            +
            +

            {% trans 'Navigation:' %}

            +
            +
            + +
            + {% with document_list as object_list %} + {% include 'appearance/generic_list_subtemplate.html' %} + {% endwith %} +
            +
            +{% endblock %} + +{% block javascript %} + + +{% endblock %} diff --git a/mayan/apps/cabinets/tests/__init__.py b/mayan/apps/cabinets/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/mayan/apps/cabinets/tests/literals.py b/mayan/apps/cabinets/tests/literals.py new file mode 100644 index 0000000000..cc8bab69ab --- /dev/null +++ b/mayan/apps/cabinets/tests/literals.py @@ -0,0 +1,4 @@ +from __future__ import absolute_import, unicode_literals + +TEST_CABINET_LABEL = 'test cabinet label' +TEST_CABINET_EDITED_LABEL = 'test cabinet edited label' diff --git a/mayan/apps/cabinets/tests/test_api.py b/mayan/apps/cabinets/tests/test_api.py new file mode 100644 index 0000000000..206ff92c18 --- /dev/null +++ b/mayan/apps/cabinets/tests/test_api.py @@ -0,0 +1,241 @@ +from __future__ import unicode_literals + +from django.contrib.auth import get_user_model +from django.core.urlresolvers import reverse +from django.test import override_settings +from django.utils.encoding import force_text + +from rest_framework.test import APITestCase + +from documents.models import DocumentType +from documents.tests import TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +from user_management.tests.literals import ( + TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME +) + +from ..models import Cabinet + +from .literals import TEST_CABINET_EDITED_LABEL, TEST_CABINET_LABEL + + +@override_settings(OCR_AUTO_OCR=False) +class CabinetAPITestCase(APITestCase): + """ + Test the cabinet API endpoints + """ + + def setUp(self): + super(CabinetAPITestCase, self).setUp() + + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object, + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document_2 = self.document_type.new_document( + file_object=file_object, + ) + + def tearDown(self): + self.document_type.delete() + super(CabinetAPITestCase, self).tearDown() + + def test_cabinet_create(self): + response = self.client.post( + reverse('rest_api:cabinet-list'), {'label': TEST_CABINET_LABEL} + ) + + cabinet = Cabinet.objects.first() + + self.assertEqual(response.data['id'], cabinet.pk) + self.assertEqual(response.data['label'], TEST_CABINET_LABEL) + + self.assertEqual(Cabinet.objects.count(), 1) + self.assertEqual(cabinet.label, TEST_CABINET_LABEL) + + def test_cabinet_create_with_single_document(self): + response = self.client.post( + reverse('rest_api:cabinet-list'), { + 'label': TEST_CABINET_LABEL, 'documents_pk_list': '{}'.format( + self.document.pk + ) + } + ) + + cabinet = Cabinet.objects.first() + + self.assertEqual(response.data['id'], cabinet.pk) + self.assertEqual(response.data['label'], TEST_CABINET_LABEL) + + self.assertQuerysetEqual( + cabinet.documents.all(), (repr(self.document),) + ) + self.assertEqual(cabinet.label, TEST_CABINET_LABEL) + + def test_cabinet_create_with_multiple_documents(self): + response = self.client.post( + reverse('rest_api:cabinet-list'), { + 'label': TEST_CABINET_LABEL, + 'documents_pk_list': '{},{}'.format( + self.document.pk, self.document_2.pk + ) + } + ) + + cabinet = Cabinet.objects.first() + + self.assertEqual(response.data['id'], cabinet.pk) + self.assertEqual(response.data['label'], TEST_CABINET_LABEL) + + self.assertEqual(Cabinet.objects.count(), 1) + + self.assertEqual(cabinet.label, TEST_CABINET_LABEL) + + self.assertQuerysetEqual( + cabinet.documents.all(), map( + repr, (self.document, self.document_2) + ) + ) + + def test_cabinet_document_delete(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + cabinet.documents.add(self.document) + + self.client.delete( + reverse( + 'rest_api:cabinet-document', + args=(cabinet.pk, self.document.pk) + ) + ) + + self.assertEqual(cabinet.documents.count(), 0) + + def test_cabinet_document_detail(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + cabinet.documents.add(self.document) + + response = self.client.get( + reverse( + 'rest_api:cabinet-document', + args=(cabinet.pk, self.document.pk) + ) + ) + + self.assertEqual(response.data['uuid'], force_text(self.document.uuid)) + + def test_cabinet_document_list(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + cabinet.documents.add(self.document) + + response = self.client.get( + reverse('rest_api:cabinet-document-list', args=(cabinet.pk,)) + ) + + self.assertEqual( + response.data['results'][0]['uuid'], force_text(self.document.uuid) + ) + + def test_cabinet_delete(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + self.client.delete( + reverse('rest_api:cabinet-detail', args=(cabinet.pk,)) + ) + + self.assertEqual(Cabinet.objects.count(), 0) + + def test_cabinet_edit_via_patch(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + self.client.patch( + reverse('rest_api:cabinet-detail', args=(cabinet.pk,)), + {'label': TEST_CABINET_EDITED_LABEL} + ) + + cabinet.refresh_from_db() + + self.assertEqual(cabinet.label, TEST_CABINET_EDITED_LABEL) + + def test_cabinet_edit_via_put(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + self.client.put( + reverse('rest_api:cabinet-detail', args=(cabinet.pk,)), + {'label': TEST_CABINET_EDITED_LABEL} + ) + + cabinet.refresh_from_db() + + self.assertEqual(cabinet.label, TEST_CABINET_EDITED_LABEL) + + def test_cabinet_add_document(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + self.client.post( + reverse('rest_api:cabinet-document-list', args=(cabinet.pk,)), { + 'documents_pk_list': '{}'.format(self.document.pk) + } + ) + + self.assertQuerysetEqual( + cabinet.documents.all(), (repr(self.document),) + ) + + def test_cabinet_add_multiple_documents(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + self.client.post( + reverse('rest_api:cabinet-document-list', args=(cabinet.pk,)), { + 'documents_pk_list': '{},{}'.format( + self.document.pk, self.document_2.pk + ) + } + ) + + self.assertQuerysetEqual( + cabinet.documents.all(), map( + repr, (self.document, self.document_2) + ) + ) + + def test_cabinet_list_view(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + Cabinet.objects.create( + label=TEST_CABINET_LABEL, parent=cabinet + ) + + response = self.client.get( + reverse('rest_api:cabinet-list') + ) + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.data['results'][0]['label'], cabinet.label) + + def test_cabinet_remove_document(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + cabinet.documents.add(self.document) + + self.client.delete( + reverse( + 'rest_api:cabinet-document', args=( + cabinet.pk, self.document.pk + ) + ), + ) + + self.assertEqual(cabinet.documents.count(), 0) diff --git a/mayan/apps/cabinets/tests/test_models.py b/mayan/apps/cabinets/tests/test_models.py new file mode 100644 index 0000000000..4c69ac5c6e --- /dev/null +++ b/mayan/apps/cabinets/tests/test_models.py @@ -0,0 +1,82 @@ +from __future__ import unicode_literals + +from django.core.exceptions import ValidationError +from django.test import override_settings + +from common.tests import BaseTestCase +from documents.models import DocumentType +from documents.tests import TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH + +from ..models import Cabinet + +from .literals import TEST_CABINET_LABEL + + +@override_settings(OCR_AUTO_OCR=False) +class CabinetTestCase(BaseTestCase): + def setUp(self): + super(CabinetTestCase, self).setUp() + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object + ) + + def tearDown(self): + self.document_type.delete() + super(CabinetTestCase, self).tearDown() + + def test_cabinet_creation(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + self.assertEqual(Cabinet.objects.all().count(), 1) + self.assertQuerysetEqual(Cabinet.objects.all(), (repr(cabinet),)) + + def test_cabinet_duplicate_creation(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + with self.assertRaises(ValidationError): + cabinet_2 = Cabinet(label=TEST_CABINET_LABEL) + cabinet_2.validate_unique() + cabinet_2.save() + + self.assertEqual(Cabinet.objects.all().count(), 1) + self.assertQuerysetEqual(Cabinet.objects.all(), (repr(cabinet),)) + + def test_inner_cabinet_creation(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + inner_cabinet = Cabinet.objects.create( + parent=cabinet, label=TEST_CABINET_LABEL + ) + + self.assertEqual(Cabinet.objects.all().count(), 2) + self.assertQuerysetEqual( + Cabinet.objects.all(), map(repr, (cabinet, inner_cabinet)) + ) + + def test_addition_of_documents(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + cabinet.documents.add(self.document) + + self.assertEqual(cabinet.documents.count(), 1) + self.assertQuerysetEqual( + cabinet.documents.all(), (repr(self.document),) + ) + + def test_addition_and_deletion_of_documents(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + cabinet.documents.add(self.document) + + self.assertEqual(cabinet.documents.count(), 1) + self.assertQuerysetEqual( + cabinet.documents.all(), (repr(self.document),) + ) + + cabinet.documents.remove(self.document) + + self.assertEqual(cabinet.documents.count(), 0) + self.assertQuerysetEqual(cabinet.documents.all(), ()) diff --git a/mayan/apps/cabinets/tests/test_views.py b/mayan/apps/cabinets/tests/test_views.py new file mode 100644 index 0000000000..afc396908e --- /dev/null +++ b/mayan/apps/cabinets/tests/test_views.py @@ -0,0 +1,207 @@ +from __future__ import absolute_import, unicode_literals + +from documents.permissions import permission_document_view +from documents.tests.test_views import GenericDocumentViewTestCase + +from ..models import Cabinet +from ..permissions import ( + permission_cabinet_add_document, permission_cabinet_create, + permission_cabinet_delete, permission_cabinet_edit, + permission_cabinet_remove_document, permission_cabinet_view +) +from .literals import TEST_CABINET_LABEL, TEST_CABINET_EDITED_LABEL + + +class CabinetViewTestCase(GenericDocumentViewTestCase): + def setUp(self): + super(CabinetViewTestCase, self).setUp() + self.login_user() + + def _create_cabinet(self, label): + return self.post( + 'cabinets:cabinet_create', data={ + 'label': TEST_CABINET_LABEL + } + ) + + def test_cabinet_create_view_no_permission(self): + response = self._create_cabinet(label=TEST_CABINET_LABEL) + + self.assertEquals(response.status_code, 403) + self.assertEqual(Cabinet.objects.count(), 0) + + def test_cabinet_create_view_with_permission(self): + self.grant(permission=permission_cabinet_create) + + response = self._create_cabinet(label=TEST_CABINET_LABEL) + + self.assertEqual(response.status_code, 302) + self.assertEqual(Cabinet.objects.count(), 1) + self.assertEqual(Cabinet.objects.first().label, TEST_CABINET_LABEL) + + def test_cabinet_create_duplicate_view_with_permission(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + self.grant(permission=permission_cabinet_create) + response = self._create_cabinet(label=TEST_CABINET_LABEL) + + # HTTP 200 with error message + self.assertEqual(response.status_code, 200) + self.assertEqual(Cabinet.objects.count(), 1) + self.assertEqual(Cabinet.objects.first().pk, cabinet.pk) + + def _delete_cabinet(self, cabinet): + return self.post('cabinets:cabinet_delete', args=(cabinet.pk,)) + + def test_cabinet_delete_view_no_permission(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + response = self._delete_cabinet(cabinet=cabinet) + self.assertEqual(response.status_code, 403) + self.assertEqual(Cabinet.objects.count(), 1) + + def test_cabinet_delete_view_with_permission(self): + self.grant(permission=permission_cabinet_delete) + + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + response = self._delete_cabinet(cabinet=cabinet) + + self.assertEqual(response.status_code, 302) + self.assertEqual(Cabinet.objects.count(), 0) + + def _edit_cabinet(self, cabinet, label): + return self.post( + 'cabinets:cabinet_edit', args=(cabinet.pk,), data={ + 'label': label + } + ) + + def test_cabinet_edit_view_no_permission(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + response = self._edit_cabinet( + cabinet=cabinet, label=TEST_CABINET_EDITED_LABEL + ) + self.assertEqual(response.status_code, 403) + cabinet.refresh_from_db() + self.assertEqual(cabinet.label, TEST_CABINET_LABEL) + + def test_cabinet_edit_view_with_permission(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + self.grant(permission=permission_cabinet_edit) + + response = self._edit_cabinet( + cabinet=cabinet, label=TEST_CABINET_EDITED_LABEL + ) + + self.assertEqual(response.status_code, 302) + cabinet.refresh_from_db() + self.assertEqual(cabinet.label, TEST_CABINET_EDITED_LABEL) + + def _add_document_to_cabinet(self, cabinet): + return self.post( + 'cabinets:cabinet_add_document', args=(self.document.pk,), data={ + 'cabinets': cabinet.pk + } + ) + + def test_cabinet_add_document_view_no_permission(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + self.grant(permission=permission_cabinet_view) + + response = self._add_document_to_cabinet(cabinet=cabinet) + + self.assertContains( + response, text='Select a valid choice.', status_code=200 + ) + cabinet.refresh_from_db() + self.assertEqual(cabinet.documents.count(), 0) + + def test_cabinet_add_document_view_with_permission(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + self.grant(permission=permission_cabinet_view) + self.grant(permission=permission_cabinet_add_document) + self.grant(permission=permission_document_view) + + response = self._add_document_to_cabinet(cabinet=cabinet) + + cabinet.refresh_from_db() + + self.assertEqual(response.status_code, 302) + self.assertEqual(cabinet.documents.count(), 1) + self.assertQuerysetEqual( + cabinet.documents.all(), (repr(self.document),) + ) + + def _add_multiple_documents_to_cabinet(self, cabinet): + return self.post( + 'cabinets:cabinet_add_multiple_documents', data={ + 'id_list': (self.document.pk,), 'cabinets': cabinet.pk + } + ) + + def test_cabinet_add_multiple_documents_view_no_permission(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + self.grant(permission=permission_cabinet_view) + + response = self._add_multiple_documents_to_cabinet(cabinet=cabinet) + + self.assertContains( + response, text='Select a valid choice', status_code=200 + ) + cabinet.refresh_from_db() + self.assertEqual(cabinet.documents.count(), 0) + + def test_cabinet_add_multiple_documents_view_with_permission(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + self.grant(permission=permission_cabinet_view) + self.grant(permission=permission_cabinet_add_document) + + response = self._add_multiple_documents_to_cabinet(cabinet=cabinet) + + self.assertEqual(response.status_code, 302) + cabinet.refresh_from_db() + self.assertEqual(cabinet.documents.count(), 1) + self.assertQuerysetEqual( + cabinet.documents.all(), (repr(self.document),) + ) + + def _remove_document_from_cabinet(self, cabinet): + return self.post( + 'cabinets:document_cabinet_remove', args=(self.document.pk,), + data={ + 'cabinets': (cabinet.pk,), + } + ) + + def test_cabinet_remove_document_view_no_permission(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + cabinet.documents.add(self.document) + + response = self._remove_document_from_cabinet(cabinet=cabinet) + + self.assertContains( + response, text='Select a valid choice', status_code=200 + ) + + cabinet.refresh_from_db() + self.assertEqual(cabinet.documents.count(), 1) + + def test_cabinet_remove_document_view_with_permission(self): + cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL) + + cabinet.documents.add(self.document) + + self.grant(permission=permission_cabinet_remove_document) + + response = self._remove_document_from_cabinet(cabinet=cabinet) + + self.assertEqual(response.status_code, 302) + cabinet.refresh_from_db() + self.assertEqual(cabinet.documents.count(), 0) diff --git a/mayan/apps/cabinets/urls.py b/mayan/apps/cabinets/urls.py new file mode 100644 index 0000000000..14142d67b1 --- /dev/null +++ b/mayan/apps/cabinets/urls.py @@ -0,0 +1,73 @@ +from __future__ import unicode_literals + +from django.conf.urls import url + +from .api_views import ( + APIDocumentCabinetListView, APICabinetDocumentListView, + APICabinetDocumentView, APICabinetListView, APICabinetView +) +from .views import ( + DocumentAddToCabinetView, DocumentCabinetListView, + DocumentRemoveFromCabinetView, CabinetChildAddView, CabinetCreateView, + CabinetDeleteView, CabinetDetailView, CabinetEditView, CabinetListView, +) + +urlpatterns = [ + url(r'^list/$', CabinetListView.as_view(), name='cabinet_list'), + url( + r'^(?P\d+)/child/add/$', CabinetChildAddView.as_view(), + name='cabinet_child_add' + ), + url(r'^create/$', CabinetCreateView.as_view(), name='cabinet_create'), + url( + r'^(?P\d+)/edit/$', CabinetEditView.as_view(), name='cabinet_edit' + ), + url( + r'^(?P\d+)/delete/$', CabinetDeleteView.as_view(), + name='cabinet_delete' + ), + url(r'^(?P\d+)/$', CabinetDetailView.as_view(), name='cabinet_view'), + + url( + r'^document/(?P\d+)/cabinet/add/$', + DocumentAddToCabinetView.as_view(), name='cabinet_add_document' + ), + url( + r'^document/multiple/cabinet/add/$', + DocumentAddToCabinetView.as_view(), + name='cabinet_add_multiple_documents' + ), + url( + r'^document/(?P\d+)/cabinet/remove/$', + DocumentRemoveFromCabinetView.as_view(), name='document_cabinet_remove' + ), + url( + r'^document/multiple/cabinet/remove/$', + DocumentRemoveFromCabinetView.as_view(), + name='multiple_document_cabinet_remove' + ), + url( + r'^document/(?P\d+)/cabinet/list/$', + DocumentCabinetListView.as_view(), name='document_cabinet_list' + ), +] + +api_urls = [ + url( + r'^cabinets/(?P[0-9]+)/documents/(?P[0-9]+)/$', + APICabinetDocumentView.as_view(), name='cabinet-document' + ), + url( + r'^cabinets/(?P[0-9]+)/documents/$', + APICabinetDocumentListView.as_view(), name='cabinet-document-list' + ), + url( + r'^cabinets/(?P[0-9]+)/$', APICabinetView.as_view(), + name='cabinet-detail' + ), + url(r'^cabinets/$', APICabinetListView.as_view(), name='cabinet-list'), + url( + r'^documents/(?P[0-9]+)/cabinets/$', + APIDocumentCabinetListView.as_view(), name='document-cabinet-list' + ), +] diff --git a/mayan/apps/cabinets/views.py b/mayan/apps/cabinets/views.py new file mode 100644 index 0000000000..012b28c3a4 --- /dev/null +++ b/mayan/apps/cabinets/views.py @@ -0,0 +1,348 @@ +from __future__ import absolute_import, unicode_literals + +import logging + +from django.contrib import messages +from django.core.urlresolvers import reverse_lazy +from django.shortcuts import get_object_or_404 +from django.utils.translation import ugettext_lazy as _, ungettext + +from acls.models import AccessControlList +from common.views import ( + MultipleObjectFormActionView, SingleObjectCreateView, + SingleObjectDeleteView, SingleObjectEditView, SingleObjectListView, + TemplateView +) +from documents.permissions import permission_document_view +from documents.models import Document + +from .forms import CabinetListForm +from .models import Cabinet +from .permissions import ( + permission_cabinet_add_document, permission_cabinet_create, + permission_cabinet_delete, permission_cabinet_edit, + permission_cabinet_view, permission_cabinet_remove_document +) +from .widgets import jstree_data + + +logger = logging.getLogger(__name__) + + +class CabinetCreateView(SingleObjectCreateView): + fields = ('label',) + model = Cabinet + view_permission = permission_cabinet_create + + def get_extra_context(self): + return { + 'title': _('Create cabinet'), + } + + +class CabinetChildAddView(SingleObjectCreateView): + fields = ('label',) + model = Cabinet + + def form_valid(self, form): + """ + If the form is valid, save the associated model. + """ + self.object = form.save(commit=False) + self.object.parent = self.get_object() + self.object.save() + + return super(CabinetChildAddView, self).form_valid(form) + + def get_object(self, *args, **kwargs): + cabinet = super(CabinetChildAddView, self).get_object(*args, **kwargs) + + AccessControlList.objects.check_access( + permissions=permission_cabinet_edit, user=self.request.user, + obj=cabinet.get_root() + ) + + return cabinet + + def get_extra_context(self): + return { + 'title': _( + 'Add new level to: %s' + ) % self.get_object().get_full_path(), + } + + +class CabinetDeleteView(SingleObjectDeleteView): + model = Cabinet + object_permission = permission_cabinet_delete + post_action_redirect = reverse_lazy('cabinets:cabinet_list') + + def get_extra_context(self): + return { + 'object': self.get_object(), + 'title': _('Delete the cabinet: %s?') % self.get_object(), + } + + +class CabinetDetailView(TemplateView): + template_name = 'cabinets/cabinet_details.html' + + def get_document_queryset(self): + queryset = AccessControlList.objects.filter_by_access( + permission=permission_document_view, user=self.request.user, + queryset=self.get_object().documents.all() + ) + + return queryset + + def get_context_data(self, **kwargs): + data = super(CabinetDetailView, self).get_context_data(**kwargs) + + cabinet = self.get_object() + + data.update( + { + 'jstree_data': '\n'.join( + jstree_data(node=cabinet.get_root(), selected_node=cabinet) + ), + 'document_list': self.get_document_queryset(), + 'hide_links': True, + 'object': cabinet, + 'title': _('Details of cabinet: %s') % cabinet.get_full_path(), + } + ) + + return data + + def get_object(self): + cabinet = get_object_or_404(Cabinet, pk=self.kwargs['pk']) + + if cabinet.is_root_node(): + permission_object = cabinet + else: + permission_object = cabinet.get_root() + + AccessControlList.objects.check_access( + permissions=permission_cabinet_view, user=self.request.user, + obj=permission_object + ) + + return cabinet + + +class CabinetEditView(SingleObjectEditView): + fields = ('label',) + model = Cabinet + object_permission = permission_cabinet_edit + post_action_redirect = reverse_lazy('cabinets:cabinet_list') + + def get_extra_context(self): + return { + 'object': self.get_object(), + 'title': _('Edit cabinet: %s') % self.get_object(), + } + + +class CabinetListView(SingleObjectListView): + model = Cabinet + object_permission = permission_cabinet_view + + def get_extra_context(self): + return { + 'hide_link': True, + 'title': _('Cabinets'), + } + + def get_queryset(self): + return Cabinet.objects.root_nodes() + + +class DocumentCabinetListView(CabinetListView): + def dispatch(self, request, *args, **kwargs): + self.document = get_object_or_404(Document, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_document_view, user=request.user, + obj=self.document + ) + + return super(DocumentCabinetListView, self).dispatch( + request, *args, **kwargs + ) + + def get_extra_context(self): + return { + 'hide_link': True, + 'object': self.document, + 'title': _('Cabinets containing document: %s') % self.document, + } + + def get_queryset(self): + return self.document.document_cabinets().all() + + +class DocumentAddToCabinetView(MultipleObjectFormActionView): + form_class = CabinetListForm + model = Document + success_message = _( + 'Add to cabinet request performed on %(count)d document' + ) + success_message_plural = _( + 'Add to cabinet request performed on %(count)d documents' + ) + + def get_extra_context(self): + queryset = self.get_queryset() + + result = { + 'submit_label': _('Add'), + 'title': ungettext( + 'Add document to cabinets', + 'Add documents to cabinets', + queryset.count() + ) + } + + if queryset.count() == 1: + result.update( + { + 'object': queryset.first(), + 'title': _( + 'Add document "%s" to cabinets' + ) % queryset.first() + } + ) + + return result + + def get_form_extra_kwargs(self): + queryset = self.get_queryset() + result = { + 'help_text': _( + 'Cabinets to which the selected documents will be added.' + ), + 'permission': permission_cabinet_add_document, + 'user': self.request.user + } + + if queryset.count() == 1: + result.update( + { + 'queryset': Cabinet.objects.exclude( + pk__in=queryset.first().cabinets.all() + ) + } + ) + + return result + + def object_action(self, form, instance): + cabinet_membership = instance.cabinets.all() + + for cabinet in form.cleaned_data['cabinets']: + AccessControlList.objects.check_access( + obj=cabinet, permissions=permission_cabinet_add_document, + user=self.request.user + ) + if cabinet in cabinet_membership: + messages.warning( + self.request, _( + 'Document: %(document)s is already in ' + 'cabinet: %(cabinet)s.' + ) % { + 'document': instance, 'cabinet': cabinet + } + ) + else: + cabinet.documents.add(instance) + messages.success( + self.request, _( + 'Document: %(document)s added to cabinet: ' + '%(cabinet)s successfully.' + ) % { + 'document': instance, 'cabinet': cabinet + } + ) + + +class DocumentRemoveFromCabinetView(MultipleObjectFormActionView): + form_class = CabinetListForm + model = Document + success_message = _( + 'Remove from cabinet request performed on %(count)d document' + ) + success_message_plural = _( + 'Remove from cabinet request performed on %(count)d documents' + ) + + def get_extra_context(self): + queryset = self.get_queryset() + + result = { + 'submit_label': _('Remove'), + 'title': ungettext( + 'Remove document from cabinets', + 'Remove documents from cabinets', + queryset.count() + ) + } + + if queryset.count() == 1: + result.update( + { + 'object': queryset.first(), + 'title': _( + 'Remove document "%s" to cabinets' + ) % queryset.first() + } + ) + + return result + + def get_form_extra_kwargs(self): + queryset = self.get_queryset() + result = { + 'help_text': _( + 'Cabinets from which the selected documents will be removed.' + ), + 'permission': permission_cabinet_remove_document, + 'user': self.request.user + } + + if queryset.count() == 1: + result.update( + { + 'queryset': queryset.first().cabinets.all() + } + ) + + return result + + def object_action(self, form, instance): + cabinet_membership = instance.cabinets.all() + + for cabinet in form.cleaned_data['cabinets']: + AccessControlList.objects.check_access( + obj=cabinet, permissions=permission_cabinet_remove_document, + user=self.request.user + ) + + if cabinet not in cabinet_membership: + messages.warning( + self.request, _( + 'Document: %(document)s is not in cabinet: ' + '%(cabinet)s.' + ) % { + 'document': instance, 'cabinet': cabinet + } + ) + else: + cabinet.documents.remove(instance) + messages.success( + self.request, _( + 'Document: %(document)s removed from cabinet: ' + '%(cabinet)s.' + ) % { + 'document': instance, 'cabinet': cabinet + } + ) diff --git a/mayan/apps/cabinets/widgets.py b/mayan/apps/cabinets/widgets.py new file mode 100644 index 0000000000..7cab5b8595 --- /dev/null +++ b/mayan/apps/cabinets/widgets.py @@ -0,0 +1,28 @@ +from __future__ import unicode_literals + + +def jstree_data(node, selected_node): + result = [] + result.append('{') + result.append('"text": "{}",'.format(node.label)) + result.append( + '"state": {{ "opened": true, "selected": {} }},'.format( + 'true' if node == selected_node else 'false' + ) + ) + result.append( + '"data": {{ "href": "{}" }},'.format(node.get_absolute_url()) + ) + + children = node.get_children().order_by('label',) + + if children: + result.append('"children" : [') + for child in children: + result.extend(jstree_data(node=child, selected_node=selected_node)) + + result.append(']') + + result.append('},') + + return result diff --git a/mayan/apps/checkouts/api_views.py b/mayan/apps/checkouts/api_views.py index 6264dfc4a4..42b859af08 100644 --- a/mayan/apps/checkouts/api_views.py +++ b/mayan/apps/checkouts/api_views.py @@ -1,20 +1,13 @@ from __future__ import absolute_import, unicode_literals -import pytz - -from django.shortcuts import get_object_or_404 - -from rest_framework import generics, status -from rest_framework.response import Response +from rest_framework import generics from acls.models import AccessControlList -from documents.models import Document from documents.permissions import permission_document_view from .models import DocumentCheckout from .permissions import ( - permission_document_checkout, permission_document_checkin, - permission_document_checkin_override + permission_document_checkin, permission_document_checkin_override ) from .serializers import ( DocumentCheckoutSerializer, NewDocumentCheckoutSerializer @@ -47,12 +40,23 @@ class APICheckedoutDocumentListView(generics.ListCreateAPIView): APICheckedoutDocumentListView, self ).get(request, *args, **kwargs) + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } + + ''' def post(self, request, *args, **kwargs): """ Checkout a document. """ - serializer = self.get_serializer(data=request.DATA, files=request.FILES) + serializer = self.get_serializer(data=request.data, files=request.file) if serializer.is_valid(): document = get_object_or_404( @@ -83,6 +87,7 @@ class APICheckedoutDocumentListView(generics.ListCreateAPIView): return Response(status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + ''' class APICheckedoutDocumentView(generics.RetrieveDestroyAPIView): diff --git a/mayan/apps/checkouts/apps.py b/mayan/apps/checkouts/apps.py index 759f5fcfdd..f20e602aa6 100644 --- a/mayan/apps/checkouts/apps.py +++ b/mayan/apps/checkouts/apps.py @@ -30,8 +30,8 @@ from .tasks import task_check_expired_check_outs # NOQA class CheckoutsApp(MayanAppConfig): + has_tests = True name = 'checkouts' - test = True verbose_name = _('Checkouts') def ready(self): @@ -57,7 +57,10 @@ class CheckoutsApp(MayanAppConfig): Document.add_to_class( 'check_in', - lambda document, user=None: DocumentCheckout.objects.check_in_document(document, user) + lambda document, + user=None: DocumentCheckout.objects.check_in_document( + document, user + ) ) Document.add_to_class( 'checkout_info', diff --git a/mayan/apps/checkouts/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/ar/LC_MESSAGES/django.mo index aa5d21016f..ecb7c92ae2 100644 Binary files a/mayan/apps/checkouts/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/ar/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/ar/LC_MESSAGES/django.po index f83ae4b596..892bbc595b 100644 --- a/mayan/apps/checkouts/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/ar/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,15 @@ msgstr "" "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" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "Document automatically checked in" @@ -38,7 +43,7 @@ msgstr "Document checked out" msgid "Document forcefully checked in" msgstr "Document forcefully checked in" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "Document already checked out." @@ -46,7 +51,7 @@ msgstr "Document already checked out." msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "مستخدم" @@ -93,7 +98,7 @@ msgstr "" msgid "Checked in/available" msgstr "" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "" @@ -130,6 +135,16 @@ msgstr "Document checkout" msgid "Document checkouts" msgstr "" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "Check in documents" @@ -146,39 +161,39 @@ msgstr "Check out documents" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "Error trying to check out document; %s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "Document \"%s\" checked out successfully." -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "Check out document: %s" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "Check out details for document: %s" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -188,22 +203,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "Document has not been checked out." -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "Error trying to check in document; %s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "Document \"%s\" checked in successfully." @@ -282,9 +297,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/bg/LC_MESSAGES/django.mo index c7fd7497ed..8d67a612ae 100644 Binary files a/mayan/apps/checkouts/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/bg/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/bg/LC_MESSAGES/django.po index 46d957229a..116b1f5e71 100644 --- a/mayan/apps/checkouts/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/bg/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,15 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "Автоматично регистрирани документи" @@ -38,7 +43,7 @@ msgstr "Документът е проверен." msgid "Document forcefully checked in" msgstr "Документът е принудително регистриран" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "Документът вече е проверен." @@ -46,7 +51,7 @@ msgstr "Документът вече е проверен." msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Потребител" @@ -93,7 +98,7 @@ msgstr "" msgid "Checked in/available" msgstr "" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "" @@ -130,6 +135,16 @@ msgstr "Проверка на документ" msgid "Document checkouts" msgstr "" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "Регистрирай документи" @@ -146,39 +161,39 @@ msgstr "Провери документи" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "Грешка при проверка на документ; %s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "Документ \"%s\" проверен успешно." -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "Провери документ: %s" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "Данни от проверката на документ: %s" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -188,22 +203,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "Документът не е проверяван." -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "Грешка при регистрация на документ; %s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "Документ \"%s\" е регистриран успешно." @@ -282,9 +297,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/bs_BA/LC_MESSAGES/django.mo index 2a001d3520..2037a04ebe 100644 Binary files a/mayan/apps/checkouts/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/bs_BA/LC_MESSAGES/django.po index 50b87dbc94..0f1ba452a0 100644 --- a/mayan/apps/checkouts/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/bs_BA/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,15 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "Dokument je automatski prijavljen" @@ -38,7 +43,7 @@ msgstr "Dokument odjavljen" msgid "Document forcefully checked in" msgstr "Dokument je prisilno prijavljen" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "Dokument je već odjavljen." @@ -46,7 +51,7 @@ msgstr "Dokument je već odjavljen." msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Korisnik" @@ -93,7 +98,7 @@ msgstr "" msgid "Checked in/available" msgstr "" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "" @@ -130,6 +135,16 @@ msgstr "Odjava dokumenta" msgid "Document checkouts" msgstr "" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "Prijaviti dokumente" @@ -146,39 +161,39 @@ msgstr "Odjaviti dokumente" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "Greška pokušaja odjave dokumenta; %s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "Dokument \"%s\" uspješno odjavljen." -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "Odjaviti dokument: %s" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "Odjavni detalji za dokument: %s" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -188,22 +203,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "Dokument nije odjavljen." -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "Greška pokušaja prijave dokumenta; %s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "Dokument \"%s\" uspješno prijavljen." @@ -282,9 +297,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/da/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/da/LC_MESSAGES/django.mo index 2204e3016d..65842562bf 100644 Binary files a/mayan/apps/checkouts/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/da/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/da/LC_MESSAGES/django.po index e959b6efc1..7d8b4555ab 100644 --- a/mayan/apps/checkouts/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/da/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,15 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "" @@ -38,7 +43,7 @@ msgstr "" msgid "Document forcefully checked in" msgstr "" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "" @@ -46,7 +51,7 @@ msgstr "" msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Bruger" @@ -93,7 +98,7 @@ msgstr "" msgid "Checked in/available" msgstr "" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "" @@ -130,6 +135,16 @@ msgstr "" msgid "Document checkouts" msgstr "" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "" @@ -146,39 +161,39 @@ msgstr "" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "" -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -188,22 +203,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "" -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "" @@ -282,9 +297,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/de_DE/LC_MESSAGES/django.mo index 0beae97e14..ee4bef54b8 100644 Binary files a/mayan/apps/checkouts/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/de_DE/LC_MESSAGES/django.po index ff0679ef72..90ec8e64aa 100644 --- a/mayan/apps/checkouts/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/de_DE/LC_MESSAGES/django.po @@ -5,13 +5,14 @@ # Translators: # Translators: # Berny , 2015-2016 +# Jesaja Everling , 2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-05-20 21:40+0000\n" -"Last-Translator: Tobias Paepke \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-24 20:58+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,10 +20,15 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "Ausbuchungen" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "Ausgebuchte Dokumente" + #: events.py:9 msgid "Document automatically checked in" msgstr "Dokument automatisch eingebucht" @@ -39,7 +45,7 @@ msgstr "Dokument ausgebucht" msgid "Document forcefully checked in" msgstr "Dokument zwingend eingebucht" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "Dokument bereits ausgebucht" @@ -47,7 +53,7 @@ msgstr "Dokument bereits ausgebucht" msgid "Document status" msgstr "Dokumentenstatus" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Benutzer" @@ -94,7 +100,7 @@ msgstr "Ausgebucht" msgid "Checked in/available" msgstr "Eingebucht/Verfügbar" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "Dokument" @@ -131,6 +137,16 @@ msgstr "Ausbuchung" msgid "Document checkouts" msgstr "Ausbuchungen" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "Akutialisierungsschutz" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "Aktualisierungsschutz" + #: permissions.py:10 msgid "Check in documents" msgstr "Dokumente einbuchen" @@ -147,39 +163,39 @@ msgstr "Dokumente ausbuchen" msgid "Check out details view" msgstr "Ansicht der Ausbuchungsdetails" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "Fehler bei der Ausbuchung: %s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "Dokument \"%s\" erfolgreich ausgebucht" -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "Dokument %s ausbuchen " -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "Ausgebuchte Dokumente" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "Ausbuchungszeit" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "Ausbuchungsende" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "Ausbuchungsdetails für Dokument %s" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -189,22 +205,22 @@ msgid "" "document: %s?" msgstr "Sie haben dieses Dokument ursprünglich nicht ausgebucht. Soll Dokument %s trotzdem zwingend eingebucht werden?" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "Dokument %s einbuchen?" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "Dokument wurde nicht ausgebucht." -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "Fehler bei der Einbuchung von Dokument %s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "Dokument \"%s\" erfolgreich eingebucht" @@ -283,9 +299,6 @@ msgstr "Einheit" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/en/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/en/LC_MESSAGES/django.mo index fe5f421a48..623eb32faf 100644 Binary files a/mayan/apps/checkouts/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/en/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/en/LC_MESSAGES/django.po index 5c879101f7..9645ccd57a 100644 --- a/mayan/apps/checkouts/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2012-07-10 15:47+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,11 +18,17 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 #, fuzzy msgid "Checkouts" msgstr "checkouts" +#: apps.py:54 +#, fuzzy +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "checked out documents" + #: events.py:9 msgid "Document automatically checked in" msgstr "Document automatically checked in" @@ -39,7 +45,7 @@ msgstr "Document checked out" msgid "Document forcefully checked in" msgstr "Document forcefully checked in" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "Document already checked out." @@ -48,7 +54,7 @@ msgstr "Document already checked out." msgid "Document status" msgstr "Document status: %(widget)s %(text)s" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #, fuzzy #| msgid "User: %s" msgid "User" @@ -105,7 +111,7 @@ msgstr "checked out" msgid "Checked in/available" msgstr "checked in/available" -#: models.py:27 +#: models.py:27 models.py:92 #, fuzzy msgid "Document" msgstr "document" @@ -147,6 +153,18 @@ msgstr "Document checkout" msgid "Document checkouts" msgstr "Document checkout" +#: models.py:97 +#, fuzzy +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "New versions allowed: %s" + +#: models.py:98 +#, fuzzy +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "New versions allowed: %s" + #: permissions.py:10 msgid "Check in documents" msgstr "Check in documents" @@ -164,42 +182,42 @@ msgstr "Check out documents" msgid "Check out details view" msgstr "check out date and time" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "Error trying to check out document; %s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "Document \"%s\" checked out successfully." -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "Check out document: %s" -#: views.py:81 +#: views.py:75 #, fuzzy msgid "Documents checked out" msgstr "Document checked out" -#: views.py:91 +#: views.py:85 #, fuzzy msgid "Checkout time and date" msgstr "checkout time and date" -#: views.py:97 +#: views.py:91 #, fuzzy msgid "Checkout expiration" msgstr "checkout expiration" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "Check out details for document: %s" -#: views.py:136 +#: views.py:130 #, fuzzy, python-format #| msgid "" #| "You didn't originally checked out this document. Are you sure you wish " @@ -211,22 +229,22 @@ msgstr "" "You didn't originally checked out this document. Are you sure you wish to " "forcefully check in document: %s?" -#: views.py:140 +#: views.py:134 #, fuzzy, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "Check out document: %s" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "Document has not been checked out." -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "Error trying to check in document; %s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "Document \"%s\" checked in successfully." @@ -308,9 +326,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/es/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/es/LC_MESSAGES/django.mo index ee5710166d..0ca023da56 100644 Binary files a/mayan/apps/checkouts/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/es/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/es/LC_MESSAGES/django.po index c319e5e525..7929ff7edd 100644 --- a/mayan/apps/checkouts/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/es/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:44+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -19,10 +19,15 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "Reservaciones" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "Documento devuelto automáticamente" @@ -39,7 +44,7 @@ msgstr "Documento reservado" msgid "Document forcefully checked in" msgstr "Documento devuelto forzosamente" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "El documento ya está reservado." @@ -47,7 +52,7 @@ msgstr "El documento ya está reservado." msgid "Document status" msgstr "Estatus del documento" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Usuario" @@ -94,7 +99,7 @@ msgstr "Reservado" msgid "Checked in/available" msgstr "Devuelto/disponible" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "Documento" @@ -131,6 +136,16 @@ msgstr "Reserva de documentos" msgid "Document checkouts" msgstr "Reservaciones de documentos" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "Bloquear nueva version" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "Bloquear nuevas versiones" + #: permissions.py:10 msgid "Check in documents" msgstr "Devolver documentos" @@ -147,39 +162,39 @@ msgstr "Reservar documentos" msgid "Check out details view" msgstr "Detalles de la reserva" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "Error tratando de reservar documento; %s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "Document \"%s\" reservado con éxito." -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "Reservar el documento: %s" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "Documentos reservados" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "Fecha y hora de reservación" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "Expiración de la reservación" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "Detalles de la reserva para el documento: %s" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -189,22 +204,22 @@ msgid "" "document: %s?" msgstr "Usted no reservó inicialmente este documento. ¿Devolver forzosamente el documento: %s?" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "¿Devolver el documento: %s?" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "El documento no ha sido reservado." -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "Error tratando de devolver documento: %s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "Documento \"%s\" devuelto con éxito." @@ -283,9 +298,6 @@ msgstr "Periodo" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/fa/LC_MESSAGES/django.mo index 4b7565c8a8..adac046254 100644 Binary files a/mayan/apps/checkouts/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/fa/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/fa/LC_MESSAGES/django.po index ccd0422f69..8e54b1eeba 100644 --- a/mayan/apps/checkouts/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/fa/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,15 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "خروج Checkout" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "سند بصورت اتوماتیک وارد شده است." @@ -38,7 +43,7 @@ msgstr "سند خارج شد." msgid "Document forcefully checked in" msgstr "سند طبق دستور وارد شد." -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "سند در حال حاضر خارج و یا checked out شده است." @@ -46,7 +51,7 @@ msgstr "سند در حال حاضر خارج و یا checked out شده است." msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "کاربر" @@ -93,7 +98,7 @@ msgstr "خارج شده checked out" msgid "Checked in/available" msgstr "وارد شده و یا موجود Checked in" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "سند" @@ -130,6 +135,16 @@ msgstr "خروج و یا checkout سند" msgid "Document checkouts" msgstr "خروجی های check out سند" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "ورود اسناد" @@ -146,39 +161,39 @@ msgstr "خروج اسناد" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "خطا در زمان خارج ویا checkout کردن سند: %s " -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "سند \"%s\" بالاجبار خارج ویا checked out شد." -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "خروج و یا check out سند: %s" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "اسناد خارج شده check out" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "زمان و تاریخ خروج" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "زمان پایان خارج بودن Checkout" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "جزئیات خروج و یا Checkout سند: %s" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -188,22 +203,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "سند خارج و یا checked out نشده است." -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "خطا در زمان خروج و یا checkout سند: %s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "سند \"%s\" با موفقیت وارد و یا checked in شد." @@ -282,9 +297,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/fr/LC_MESSAGES/django.mo index 60374568fc..865b65dd37 100644 Binary files a/mayan/apps/checkouts/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/fr/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/fr/LC_MESSAGES/django.po index 203dc974d1..eeec8599bd 100644 --- a/mayan/apps/checkouts/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/fr/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-05-23 20:04+0000\n" -"Last-Translator: Bruno CAPELETO \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,10 +20,15 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "Verrous" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "Document déverrouillé automatiquement" @@ -40,7 +45,7 @@ msgstr "Document verrouillé" msgid "Document forcefully checked in" msgstr "Document déverrouillé de force" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "Document déjà verrouillé." @@ -48,7 +53,7 @@ msgstr "Document déjà verrouillé." msgid "Document status" msgstr "Status du document" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Utilisateur" @@ -95,7 +100,7 @@ msgstr "Verrouillé" msgid "Checked in/available" msgstr "Déverrouillé/disponible" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "Document" @@ -132,6 +137,16 @@ msgstr "Verrouillage du document" msgid "Document checkouts" msgstr "Verrouillages du document" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "Bloc de la nouvelle version" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "Blocs de la nouvelle version" + #: permissions.py:10 msgid "Check in documents" msgstr "Déverrouiller les documents" @@ -148,39 +163,39 @@ msgstr "Verrouiller les documents" msgid "Check out details view" msgstr "Afficher la vue détaillée" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "Erreur lors de la tentative de verrouillage du document : %s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "Document \"%s\" verouillé avec succès." -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "Verrouiller le document : %s" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "Documents verrouillés" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "Date et heure du verrouillage" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "Expiration du verrou" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "Détails du verrou pour le document : %s" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -190,22 +205,22 @@ msgid "" "document: %s?" msgstr "Ce n'est pas vous qui avec posé le verrou sur ce document. Êtes vous certain de vouloir forcer le déverrouillage de : %s?" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "Verrouiller le document : %s ?" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "Ce document n'a pas été verrouillé." -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "Erreur lors de la tentative de déverrouillage du document : %s " -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "Document \"%s\" déverrouillé avec succès." @@ -284,9 +299,6 @@ msgstr "Période" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/hu/LC_MESSAGES/django.mo index 40a6c7bcfe..b40b20ae5a 100644 Binary files a/mayan/apps/checkouts/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/hu/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/hu/LC_MESSAGES/django.po index 4060b2eb5a..07389d2983 100644 --- a/mayan/apps/checkouts/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/hu/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,15 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "" @@ -38,7 +43,7 @@ msgstr "" msgid "Document forcefully checked in" msgstr "" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "" @@ -46,7 +51,7 @@ msgstr "" msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Felhasználó" @@ -93,7 +98,7 @@ msgstr "" msgid "Checked in/available" msgstr "" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "" @@ -130,6 +135,16 @@ msgstr "" msgid "Document checkouts" msgstr "" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "" @@ -146,39 +161,39 @@ msgstr "" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "" -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -188,22 +203,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "" -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "" @@ -282,9 +297,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/id/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/id/LC_MESSAGES/django.mo index 68e2426cca..008b6d02d2 100644 Binary files a/mayan/apps/checkouts/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/id/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/id/LC_MESSAGES/django.po index 517d56d4f1..b0ea648fd8 100644 --- a/mayan/apps/checkouts/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,15 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "" @@ -38,7 +43,7 @@ msgstr "" msgid "Document forcefully checked in" msgstr "" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "" @@ -46,7 +51,7 @@ msgstr "" msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Pengguna" @@ -93,7 +98,7 @@ msgstr "" msgid "Checked in/available" msgstr "" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "" @@ -130,6 +135,16 @@ msgstr "" msgid "Document checkouts" msgstr "" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "" @@ -146,39 +161,39 @@ msgstr "" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "" -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -188,22 +203,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "" -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "" @@ -282,9 +297,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/it/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/it/LC_MESSAGES/django.mo index 7a08d2395a..2197c6cacf 100644 Binary files a/mayan/apps/checkouts/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/it/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/it/LC_MESSAGES/django.po index a5ae8867e7..11af0249f3 100644 --- a/mayan/apps/checkouts/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/it/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-09-24 10:31+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,10 +19,15 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "Uscite" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "Documento automaticamente in entrata" @@ -39,7 +44,7 @@ msgstr "Documento in uscita" msgid "Document forcefully checked in" msgstr "Forza documento in entrata" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "Documento già uscito" @@ -47,7 +52,7 @@ msgstr "Documento già uscito" msgid "Document status" msgstr "Stato documento" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Utente" @@ -94,7 +99,7 @@ msgstr "Uscito" msgid "Checked in/available" msgstr "Check-in / disponibile" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "Documento" @@ -131,6 +136,16 @@ msgstr "Documento uscito" msgid "Document checkouts" msgstr "Documenti usciti" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "Nuovo blocco versione" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "Nuovi blocchi versione" + #: permissions.py:10 msgid "Check in documents" msgstr "Check in documenti" @@ -147,39 +162,39 @@ msgstr "Check out dei documenti" msgid "Check out details view" msgstr "Visualizzazione in dettaglio dell'uscita" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "Errore nel cercare il check out del documento; %s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "Il documento\"%s\" è uscito con successo" -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "Check out documento: %s" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "Documenti estratti" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "Ora e data checkout " -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "Scadenza checkout " -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "Dettaglio del check out per il documento: %s" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -189,22 +204,22 @@ msgid "" "document: %s?" msgstr "Non hai originariamente fatto il checkout di questo documento. Forzare nel documento: %s?" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "Accetti il documento: %s?" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "Il documento non è stato fatto uscire" -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "Errore nel tentare il check out del documento; %s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "Il documento \"%s\" è entrato con successo" @@ -283,9 +298,6 @@ msgstr "Periodo" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.mo index fdead81dea..333f63cd08 100644 Binary files a/mayan/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.po index fb37318d1e..aa8b010cd8 100644 --- a/mayan/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-11-09 16:39+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,10 +20,15 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "Checkouts" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "Document automatisch in-gechecket" @@ -40,7 +45,7 @@ msgstr "Document uit-gecheckt" msgid "Document forcefully checked in" msgstr "Document geforceerd in-gecheckt" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "Document reeds uit-gecheckt." @@ -48,7 +53,7 @@ msgstr "Document reeds uit-gecheckt." msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Gebruiker" @@ -95,7 +100,7 @@ msgstr "Uit-checken" msgid "Checked in/available" msgstr "In-gecheckt/beschikbaar" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "Document" @@ -132,6 +137,16 @@ msgstr "" msgid "Document checkouts" msgstr "" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "" @@ -148,39 +163,39 @@ msgstr "" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "" -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -190,22 +205,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "" -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "" @@ -284,9 +299,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/pl/LC_MESSAGES/django.mo index e883efc621..8b30f42311 100644 Binary files a/mayan/apps/checkouts/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/pl/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/pl/LC_MESSAGES/django.po index ef6e8bc44b..7ea7f1fee3 100644 --- a/mayan/apps/checkouts/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/pl/LC_MESSAGES/django.po @@ -9,20 +9,25 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "Blokady" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "Dokument został automatycznie odblokowany" @@ -39,7 +44,7 @@ msgstr "Dokument został zablokowany" msgid "Document forcefully checked in" msgstr "Wymuszono odblokowanie dokumentu" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "Dokument jest już zablokowany." @@ -47,7 +52,7 @@ msgstr "Dokument jest już zablokowany." msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Użytkownik" @@ -94,7 +99,7 @@ msgstr "Zablokowany" msgid "Checked in/available" msgstr "Odblokowany/dostępny" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "Dokument" @@ -131,6 +136,16 @@ msgstr "Blokada dokumentu" msgid "Document checkouts" msgstr "Blokady dokumentu" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "Odblokuj dokumenty" @@ -147,39 +162,39 @@ msgstr "Zablokuj dokumenty" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "Błąd podczas blokady dokumentu: %s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "Dokument \"%s\" został pomyślnie zablokowany." -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "Zablokuj dokument: %s" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "Dokumenty zablokowane" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "Rozpoczęcie blokady" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "Wygaśnięcie blokady" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "Szczegóły blokady dokumentu: %s" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -189,22 +204,22 @@ msgid "" "document: %s?" msgstr "Ten dokument nie został przez ciebie zablokowany. Czy wymusić odblokowanie dokumentu: %s?" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "Odblokować dokument: %s?" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "Dokument nie został zablokowany." -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "Błąd podczas odblokowania dokumentu: %s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "Dokument \"%s\" został pomyślnie odblokowany." @@ -283,9 +298,6 @@ msgstr "Okres" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/pt/LC_MESSAGES/django.mo index a2431293e1..5478a03666 100644 Binary files a/mayan/apps/checkouts/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/pt/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/pt/LC_MESSAGES/django.po index fa73e45141..f7855bcf3b 100644 --- a/mayan/apps/checkouts/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/pt/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,15 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "" @@ -38,7 +43,7 @@ msgstr "" msgid "Document forcefully checked in" msgstr "" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "" @@ -46,7 +51,7 @@ msgstr "" msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Utilizador" @@ -93,7 +98,7 @@ msgstr "" msgid "Checked in/available" msgstr "" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "" @@ -130,6 +135,16 @@ msgstr "" msgid "Document checkouts" msgstr "" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "" @@ -146,39 +161,39 @@ msgstr "" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "" -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -188,22 +203,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "" -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "" @@ -282,9 +297,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.mo index 08cb131b3c..63a10f768f 100644 Binary files a/mayan/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.po index 441b223459..f415e5e87f 100644 --- a/mayan/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-11-17 22:36+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,10 +19,15 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "Reservas" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "Documento devolvido automaticamente" @@ -39,7 +44,7 @@ msgstr "Documento reservado" msgid "Document forcefully checked in" msgstr "Documento devolvido forçosamente" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "Documento já está reservado." @@ -47,7 +52,7 @@ msgstr "Documento já está reservado." msgid "Document status" msgstr "Status do documento" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Usuário" @@ -94,7 +99,7 @@ msgstr "Reservado" msgid "Checked in/available" msgstr "Devolvido/disponível" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "Documento" @@ -131,6 +136,16 @@ msgstr "Reserva de documentos" msgid "Document checkouts" msgstr "Reservas de documentos" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "Bloqueio de nova versão" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "Bloqueios de nova versão" + #: permissions.py:10 msgid "Check in documents" msgstr "Devolver documentos" @@ -147,39 +162,39 @@ msgstr "Reservar documentos" msgid "Check out details view" msgstr "Detalhes da reserva" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "Erro tentando reservar documeto; %s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "Documento \"%s\" reservado com êxito." -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "Reservar o documento: %s" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "Documentos reservados" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "Data e hora da reserva" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "Expiração da reserva" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "Detalhes da reserva para o documento: %s " -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -189,22 +204,22 @@ msgid "" "document: %s?" msgstr "Você não reservou inicialmente este documento. Devolver forçosamente o documento: %s?" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "Devolver o documento: %s?" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "O documento não foi reservado." -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "Erro tentando devolver o documento: %s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "Documento \"%s\" devolvido com sucesso." @@ -283,9 +298,6 @@ msgstr "Período" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/ro_RO/LC_MESSAGES/django.mo index 5104216595..aaa3c5fa35 100644 Binary files a/mayan/apps/checkouts/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/ro_RO/LC_MESSAGES/django.po index b43cba8af6..44adbf0152 100644 --- a/mayan/apps/checkouts/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/ro_RO/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,15 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "Document aprobat în mod automat " @@ -38,7 +43,7 @@ msgstr "Documentul aprobat" msgid "Document forcefully checked in" msgstr "Document aprobat forţat" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "Document deja aprobat." @@ -46,7 +51,7 @@ msgstr "Document deja aprobat." msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "utilizator" @@ -93,7 +98,7 @@ msgstr "" msgid "Checked in/available" msgstr "" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "" @@ -130,6 +135,16 @@ msgstr "Document aprobat" msgid "Document checkouts" msgstr "" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "Aprobări documentele" @@ -146,39 +161,39 @@ msgstr "Aprobări documente" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "Eroare la încercarea de a aproba documentul ;% s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "Documentul \"%s\" a fost aprobat cu succes." -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "Aprobarea documentului:% s" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "Verificat detaliile documentului:% s" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -188,22 +203,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "Documentul nu a fost aprobat." -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "Eroare la încercarea de aprobare a documentului; % s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "Documentul \"%s\" aprobat cu succes." @@ -282,9 +297,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/ru/LC_MESSAGES/django.mo index 1d7f582765..51f96d9af8 100644 Binary files a/mayan/apps/checkouts/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/ru/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/ru/LC_MESSAGES/django.po index 3c8bab177b..b1375a5649 100644 --- a/mayan/apps/checkouts/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/ru/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-07-19 19:54+0000\n" -"Last-Translator: lilo.panic\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,10 +19,15 @@ msgstr "" "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" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "Забронированные документы" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "Документ автоматически освобождён" @@ -39,7 +44,7 @@ msgstr "Документ забронирован" msgid "Document forcefully checked in" msgstr "Документ освобождён насильно" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "Документ уже забронирован." @@ -47,7 +52,7 @@ msgstr "Документ уже забронирован." msgid "Document status" msgstr "Статус документа" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Пользователь" @@ -94,7 +99,7 @@ msgstr "Разбронирован" msgid "Checked in/available" msgstr "Освобождён/доступен" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "Документ" @@ -131,6 +136,16 @@ msgstr "Бронирование документа" msgid "Document checkouts" msgstr "Забронированные документы" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "Блокировка добавления новых версий" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "Блокировки добавления новых версий" + #: permissions.py:10 msgid "Check in documents" msgstr "Освобождение документов" @@ -147,39 +162,39 @@ msgstr "Бронирование документов" msgid "Check out details view" msgstr "Подробности бронирования" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "Не удалось забронировать %s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "Документ \"%s\" забронирован." -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "Бронирование документа: %s" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "Документы забронированы" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "Дата и время бронирования" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "Истечение бронирования" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "Подробности бронирования %s" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -189,22 +204,22 @@ msgid "" "document: %s?" msgstr "Документ был забронирован не вами. Освободить насильно %s?" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "Освободить документ: %s?" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "Документ не был забронирован." -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "Ошибка освобождения документа %s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "Документ \"%s\" освобожден." @@ -283,9 +298,6 @@ msgstr "Интервал" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/sl_SI/LC_MESSAGES/django.mo index 0546f1fa47..42922b9515 100644 Binary files a/mayan/apps/checkouts/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/sl_SI/LC_MESSAGES/django.po index 2a7c4b5920..1574abdb6f 100644 --- a/mayan/apps/checkouts/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-23 16:43+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,35 +18,40 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" +msgstr "Odjave" + +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" msgstr "" #: events.py:9 msgid "Document automatically checked in" -msgstr "" +msgstr "Dokument je avtomatsko prijavljen" #: events.py:12 msgid "Document checked in" -msgstr "" +msgstr "Dokument prijavljen" #: events.py:15 msgid "Document checked out" -msgstr "" +msgstr "Dokument prijavljen" #: events.py:19 msgid "Document forcefully checked in" -msgstr "" +msgstr "Dokumentu je vsiljena prijava" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." -msgstr "" +msgstr "Dokument je že odjavljen" #: forms.py:28 msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "" @@ -75,31 +80,31 @@ msgstr "" #: links.py:35 msgid "Check out document" -msgstr "" +msgstr "Odjavi dokument" #: links.py:41 msgid "Check in document" -msgstr "" +msgstr "Prijavi dokument" #: links.py:48 msgid "Check in/out" -msgstr "" +msgstr "Prijava / Odjava" #: literals.py:12 msgid "Checked out" -msgstr "" +msgstr "Odjavljen" #: literals.py:13 msgid "Checked in/available" -msgstr "" +msgstr "Prijavljen / na voljo" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" -msgstr "" +msgstr "Dokument" #: models.py:29 msgid "Check out date and time" -msgstr "" +msgstr "Oglejte si datum in čas" #: models.py:33 msgid "Amount of time to hold the document checked out in minutes." @@ -130,6 +135,16 @@ msgstr "" msgid "Document checkouts" msgstr "" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "" @@ -146,39 +161,39 @@ msgstr "" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "" -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -188,22 +203,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "" -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "" @@ -282,9 +297,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/vi_VN/LC_MESSAGES/django.mo index 3a10880f30..0100b9910c 100644 Binary files a/mayan/apps/checkouts/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/vi_VN/LC_MESSAGES/django.po index 809c57ed4d..2517136726 100644 --- a/mayan/apps/checkouts/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/vi_VN/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,15 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "" @@ -38,7 +43,7 @@ msgstr "" msgid "Document forcefully checked in" msgstr "" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "" @@ -46,7 +51,7 @@ msgstr "" msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "Người dùng" @@ -93,7 +98,7 @@ msgstr "" msgid "Checked in/available" msgstr "" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "" @@ -130,6 +135,16 @@ msgstr "" msgid "Document checkouts" msgstr "" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "" @@ -146,39 +161,39 @@ msgstr "" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "" -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -188,22 +203,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "" -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "" @@ -282,9 +297,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/checkouts/locale/zh_CN/LC_MESSAGES/django.mo index 59d2ad8ca2..398a3d04b5 100644 Binary files a/mayan/apps/checkouts/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/checkouts/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/checkouts/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/checkouts/locale/zh_CN/LC_MESSAGES/django.po index 4ffd34e056..a6eedb01a4 100644 --- a/mayan/apps/checkouts/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/checkouts/locale/zh_CN/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-03-21 21:08+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -18,10 +18,15 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:31 links.py:30 +#: apps.py:35 links.py:30 msgid "Checkouts" msgstr "" +#: apps.py:54 +#| msgid "checked out documents" +msgid "Checkedout documents" +msgstr "" + #: events.py:9 msgid "Document automatically checked in" msgstr "文档自动签入" @@ -38,7 +43,7 @@ msgstr "文档检出" msgid "Document forcefully checked in" msgstr "文档强制签入" -#: exceptions.py:25 views.py:55 +#: exceptions.py:25 views.py:49 msgid "Document already checked out." msgstr "文档已经检出" @@ -46,7 +51,7 @@ msgstr "文档已经检出" msgid "Document status" msgstr "" -#: forms.py:37 models.py:37 views.py:85 +#: forms.py:37 models.py:37 views.py:79 #| msgid "User: %s" msgid "User" msgstr "用户" @@ -93,7 +98,7 @@ msgstr "" msgid "Checked in/available" msgstr "" -#: models.py:27 +#: models.py:27 models.py:92 msgid "Document" msgstr "" @@ -130,6 +135,16 @@ msgstr "文档检出" msgid "Document checkouts" msgstr "" +#: models.py:97 +#| msgid "New versions allowed: %s" +msgid "New version block" +msgstr "" + +#: models.py:98 +#| msgid "New versions allowed: %s" +msgid "New version blocks" +msgstr "" + #: permissions.py:10 msgid "Check in documents" msgstr "签入文档" @@ -146,39 +161,39 @@ msgstr "检出文档" msgid "Check out details view" msgstr "" -#: views.py:59 +#: views.py:53 #, python-format msgid "Error trying to check out document; %s" msgstr "尝试检出文档出错%s" -#: views.py:64 +#: views.py:58 #, python-format msgid "Document \"%s\" checked out successfully." msgstr "文档\"%s\"检出成功" -#: views.py:72 +#: views.py:66 #, python-format msgid "Check out document: %s" msgstr "检出文档: %s" -#: views.py:81 +#: views.py:75 msgid "Documents checked out" msgstr "" -#: views.py:91 +#: views.py:85 msgid "Checkout time and date" msgstr "" -#: views.py:97 +#: views.py:91 msgid "Checkout expiration" msgstr "" -#: views.py:118 +#: views.py:112 #, python-format msgid "Check out details for document: %s" msgstr "文档:%s的检出信息" -#: views.py:136 +#: views.py:130 #, python-format #| msgid "" #| "dn't originally checked out this document. Are you sure you wish cefully " @@ -188,22 +203,22 @@ msgid "" "document: %s?" msgstr "" -#: views.py:140 +#: views.py:134 #, python-format #| msgid "Check out document: %s" msgid "Check in the document: %s?" msgstr "" -#: views.py:177 +#: views.py:162 msgid "Document has not been checked out." msgstr "文档未被检出" -#: views.py:182 +#: views.py:167 #, python-format msgid "Error trying to check in document; %s" msgstr "尝试签入文档出错: %s" -#: views.py:187 +#: views.py:172 #, python-format msgid "Document \"%s\" checked in successfully." msgstr "文档\"%s\"签入成功" @@ -282,9 +297,6 @@ msgstr "" #~ msgid "document checkouts" #~ msgstr "document checkouts" -#~ msgid "checked out documents" -#~ msgstr "checked out documents" - #~ msgid "no" #~ msgstr "no" diff --git a/mayan/apps/checkouts/managers.py b/mayan/apps/checkouts/managers.py index 064c4bda37..6d795729ce 100644 --- a/mayan/apps/checkouts/managers.py +++ b/mayan/apps/checkouts/managers.py @@ -19,7 +19,7 @@ logger = logging.getLogger(__name__) class DocumentCheckoutManager(models.Manager): def checkout_document(self, document, expiration_datetime, user, block_new_version=True): - self.create( + return self.create( document=document, expiration_datetime=expiration_datetime, user=user, block_new_version=block_new_version ) diff --git a/mayan/apps/checkouts/serializers.py b/mayan/apps/checkouts/serializers.py index 72f7947cca..d322111069 100644 --- a/mayan/apps/checkouts/serializers.py +++ b/mayan/apps/checkouts/serializers.py @@ -1,15 +1,19 @@ from __future__ import unicode_literals +from django.utils.translation import ugettext_lazy as _ + from rest_framework import serializers +from acls.models import AccessControlList +from documents.models import Document +from documents.serializers import DocumentSerializer + from .models import DocumentCheckout +from .permissions import permission_document_checkout class DocumentCheckoutSerializer(serializers.ModelSerializer): def __init__(self, *args, **kwargs): - # Hide this import otherwise strange circular import error occur - from documents.serializers import DocumentSerializer - super(DocumentCheckoutSerializer, self).__init__(*args, **kwargs) self.fields['document'] = DocumentSerializer() @@ -17,7 +21,33 @@ class DocumentCheckoutSerializer(serializers.ModelSerializer): model = DocumentCheckout -class NewDocumentCheckoutSerializer(serializers.Serializer): - document = serializers.IntegerField() - expiration_datetime = serializers.DateTimeField() +class NewDocumentCheckoutSerializer(serializers.ModelSerializer): block_new_version = serializers.BooleanField() + document_pk = serializers.IntegerField( + help_text=_('Primary key of the document to be checked out.'), + write_only=True + ) + expiration_datetime = serializers.DateTimeField() + + class Meta: + fields = ( + 'block_new_version', 'document', 'document_pk', + 'expiration_datetime', 'id' + ) + model = DocumentCheckout + read_only_fields = ('document',) + write_only_fields = ('document_pk',) + + def create(self, validated_data): + document = Document.objects.get(pk=validated_data.pop('document_pk')) + + AccessControlList.objects.check_access( + permissions=permission_document_checkout, + user=self.context['request'].user, obj=document + ) + + validated_data['document'] = document + validated_data['user'] = self.context['request'].user + return super(NewDocumentCheckoutSerializer, self).create( + validated_data + ) diff --git a/mayan/apps/checkouts/tests/test_api.py b/mayan/apps/checkouts/tests/test_api.py new file mode 100644 index 0000000000..eccdb4d265 --- /dev/null +++ b/mayan/apps/checkouts/tests/test_api.py @@ -0,0 +1,75 @@ +from __future__ import unicode_literals + +import datetime + +from django.contrib.auth import get_user_model +from django.core.urlresolvers import reverse +from django.test import override_settings +from django.utils.encoding import force_text +from django.utils.timezone import now + +from rest_framework.test import APITestCase + +from documents.models import DocumentType +from documents.tests import TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +from user_management.tests.literals import ( + TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME +) + +from ..models import DocumentCheckout + + +@override_settings(OCR_AUTO_OCR=False) +class CheckoutAPITestCase(APITestCase): + def setUp(self): + super(CheckoutAPITestCase, self).setUp() + + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object, + ) + + def tearDown(self): + self.document_type.delete() + super(CheckoutAPITestCase, self).tearDown() + + def test_document_checkout_get_view(self): + expiration_datetime = now() + datetime.timedelta(days=1) + + DocumentCheckout.objects.checkout_document( + document=self.document, expiration_datetime=expiration_datetime, + user=self.admin_user, block_new_version=True + ) + + response = self.client.get(reverse('rest_api:checkout-document-list')) + + self.assertEqual( + response.data['results'][0]['document']['uuid'], + force_text(self.document.uuid) + ) + + def test_document_checkout_post_view(self): + response = self.client.post( + reverse('rest_api:checkout-document-list'), data={ + 'document_pk': self.document.pk, + 'expiration_datetime': '2099-01-01T12:00' + } + ) + + self.assertEqual(response.status_code, 201) + self.assertEqual( + DocumentCheckout.objects.first().document, self.document + ) diff --git a/mayan/apps/checkouts/urls.py b/mayan/apps/checkouts/urls.py index bbc29b12c6..dabf479251 100644 --- a/mayan/apps/checkouts/urls.py +++ b/mayan/apps/checkouts/urls.py @@ -26,11 +26,11 @@ urlpatterns = [ api_urls = [ url( - r'^documents/$', APICheckedoutDocumentListView.as_view(), + r'^checkouts/$', APICheckedoutDocumentListView.as_view(), name='checkout-document-list' ), url( - r'^documents/(?P[0-9]+)/$', APICheckedoutDocumentView.as_view(), + r'^checkouts/(?P[0-9]+)/$', APICheckedoutDocumentView.as_view(), name='checkedout-document-view' ), ] diff --git a/mayan/apps/common/apps.py b/mayan/apps/common/apps.py index 1c56cb4553..a415d5e7c3 100644 --- a/mayan/apps/common/apps.py +++ b/mayan/apps/common/apps.py @@ -71,8 +71,8 @@ class MayanAppConfig(apps.AppConfig): class CommonApp(MayanAppConfig): app_url = '' + has_tests = True name = 'common' - test = True verbose_name = _('Common') def ready(self): @@ -148,7 +148,7 @@ class CommonApp(MayanAppConfig): if settings.DEBUG: level = 'DEBUG' else: - level = 'INFO' + level = 'ERROR' loggers = {} for project_app in apps.apps.get_app_configs(): diff --git a/mayan/apps/common/generics.py b/mayan/apps/common/generics.py index ab67e9cc0c..1ff511c2a9 100644 --- a/mayan/apps/common/generics.py +++ b/mayan/apps/common/generics.py @@ -18,7 +18,14 @@ from django_downloadview import VirtualDownloadView, VirtualFile from pure_pagination.mixins import PaginationMixin from .forms import ChoiceForm -from .mixins import * # NOQA +from .mixins import ( + DeleteExtraDataMixin, ExtraContextMixin, FormExtraKwargsMixin, + MultipleObjectMixin, ObjectActionMixin, + ObjectListPermissionFilterMixin, ObjectNameMixin, + ObjectPermissionCheckMixin, RedirectionMixin, + ViewPermissionCheckMixin +) + from .settings import setting_paginate_by __all__ = ( @@ -182,9 +189,49 @@ class FormView(FormExtraKwargsMixin, ViewPermissionCheckMixin, ExtraContextMixin class MultiFormView(DjangoFormView): + prefix = None prefixes = {} - prefix = None + def _create_form(self, form_name, klass): + form_kwargs = self.get_form_kwargs(form_name) + form_create_method = 'create_%s_form' % form_name + if hasattr(self, form_create_method): + form = getattr(self, form_create_method)(**form_kwargs) + else: + form = klass(**form_kwargs) + return form + + def forms_valid(self, forms): + for form_name, form in forms.items(): + form_valid_method = '%s_form_valid' % form_name + + if hasattr(self, form_valid_method): + return getattr(self, form_valid_method)(form) + + self.all_forms_valid(forms) + + return HttpResponseRedirect(self.get_success_url()) + + def forms_invalid(self, forms): + return self.render_to_response(self.get_context_data(forms=forms)) + + def get(self, request, *args, **kwargs): + form_classes = self.get_form_classes() + forms = self.get_forms(form_classes) + return self.render_to_response(self.get_context_data(forms=forms)) + + def get_context_data(self, **kwargs): + """ + Insert the form into the context dict. + """ + if 'forms' not in kwargs: + kwargs['forms'] = self.get_forms( + form_classes=self.get_form_classes() + ) + return super(FormMixin, self).get_context_data(**kwargs) + + def get_form_classes(self): + return self.form_classes def get_form_kwargs(self, form_name): kwargs = {} @@ -199,25 +246,6 @@ class MultiFormView(DjangoFormView): return kwargs - def _create_form(self, form_name, klass): - form_kwargs = self.get_form_kwargs(form_name) - form_create_method = 'create_%s_form' % form_name - if hasattr(self, form_create_method): - form = getattr(self, form_create_method)(**form_kwargs) - else: - form = klass(**form_kwargs) - return form - - def get_context_data(self, **kwargs): - """ - Insert the form into the context dict. - """ - if 'forms' not in kwargs: - kwargs['forms'] = self.get_forms( - form_classes=self.get_form_classes() - ) - return super(FormMixin, self).get_context_data(**kwargs) - def get_forms(self, form_classes): return dict( [ @@ -237,25 +265,6 @@ class MultiFormView(DjangoFormView): def get_prefix(self, form_name): return self.prefixes.get(form_name, self.prefix) - def get(self, request, *args, **kwargs): - form_classes = self.get_form_classes() - forms = self.get_forms(form_classes) - return self.render_to_response(self.get_context_data(forms=forms)) - - def forms_valid(self, forms): - for form_name, form in forms.items(): - form_valid_method = '%s_form_valid' % form_name - - if hasattr(self, form_valid_method): - return getattr(self, form_valid_method)(form) - - self.all_forms_valid(forms) - - return HttpResponseRedirect(self.get_success_url()) - - def forms_invalid(self, forms): - return self.render_to_response(self.get_context_data(forms=forms)) - def post(self, request, *args, **kwargs): form_classes = self.get_form_classes() forms = self.get_forms(form_classes) @@ -369,7 +378,7 @@ class SingleObjectDeleteView(ObjectNameMixin, DeleteExtraDataMixin, ViewPermissi return result -class SingleObjectDetailView(ViewPermissionCheckMixin, ObjectPermissionCheckMixin, ExtraContextMixin, ModelFormMixin, DetailView): +class SingleObjectDetailView(ViewPermissionCheckMixin, ObjectPermissionCheckMixin, FormExtraKwargsMixin, ExtraContextMixin, ModelFormMixin, DetailView): template_name = 'appearance/generic_form.html' def get_context_data(self, **kwargs): diff --git a/mayan/apps/common/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/common/locale/ar/LC_MESSAGES/django.mo index 081c594fab..c9b43fd29e 100644 Binary files a/mayan/apps/common/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/ar/LC_MESSAGES/django.po b/mayan/apps/common/locale/ar/LC_MESSAGES/django.po index 38b0233630..52ca4dd57e 100644 --- a/mayan/apps/common/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/ar/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -19,67 +19,67 @@ msgstr "" "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" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "الاختيار" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "إضافة" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "إزالة" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" +msgid "About this" msgstr "" #: links.py:12 @@ -99,22 +99,38 @@ msgid "Edit locale profile" msgstr "" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "License" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "" @@ -130,7 +146,21 @@ msgstr "Hours" msgid "Minutes" msgstr "Minutes" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Object" @@ -175,6 +205,24 @@ msgid "User locale profiles" msgstr "" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "" + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -183,68 +231,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "لم يتم اختيار اجراء." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "يجب اختيار غرض واحد عالأقل." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "لا شيء" diff --git a/mayan/apps/common/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/common/locale/bg/LC_MESSAGES/django.mo index cca57d9b85..22fcf78b05 100644 Binary files a/mayan/apps/common/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/bg/LC_MESSAGES/django.po b/mayan/apps/common/locale/bg/LC_MESSAGES/django.po index 16256964c2..d3f57920c0 100644 --- a/mayan/apps/common/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/bg/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -19,67 +19,67 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Добави" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Премахнете" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" +msgid "About this" msgstr "" #: links.py:12 @@ -99,22 +99,38 @@ msgid "Edit locale profile" msgstr "" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Лиценз" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "" @@ -130,7 +146,21 @@ msgstr "Часове" msgid "Minutes" msgstr "Минути" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Обект" @@ -175,6 +205,24 @@ msgid "User locale profiles" msgstr "" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "" + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -183,68 +231,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Не са избрани действия." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "" -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Няма" diff --git a/mayan/apps/common/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/common/locale/bs_BA/LC_MESSAGES/django.mo index d899ed4223..bc0fd0be6b 100644 Binary files a/mayan/apps/common/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/common/locale/bs_BA/LC_MESSAGES/django.po index 8b8819d328..2aba44583a 100644 --- a/mayan/apps/common/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/bs_BA/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -19,67 +19,67 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "Odabir" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Dodati" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Ukloniti" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" +msgid "About this" msgstr "" #: links.py:12 @@ -99,22 +99,38 @@ msgid "Edit locale profile" msgstr "" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Licence" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "" @@ -130,7 +146,21 @@ msgstr "Sati" msgid "Minutes" msgstr "Minuta" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Objekat" @@ -175,6 +205,24 @@ msgid "User locale profiles" msgstr "" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "" + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -183,68 +231,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Nijedna akcija nije odabrana." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Mora biti izabrana barem jedna stanka." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Nijedno" diff --git a/mayan/apps/common/locale/da/LC_MESSAGES/django.mo b/mayan/apps/common/locale/da/LC_MESSAGES/django.mo index 2aa0079287..2b010009b2 100644 Binary files a/mayan/apps/common/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/da/LC_MESSAGES/django.po b/mayan/apps/common/locale/da/LC_MESSAGES/django.po index cc4fdec981..91da79a231 100644 --- a/mayan/apps/common/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/da/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -18,67 +18,67 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" +msgid "About this" msgstr "" #: links.py:12 @@ -98,22 +98,38 @@ msgid "Edit locale profile" msgstr "" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "" @@ -129,7 +145,21 @@ msgstr "" msgid "Minutes" msgstr "" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Objekt" @@ -174,6 +204,24 @@ msgid "User locale profiles" msgstr "" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "" + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -182,68 +230,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "" -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "" -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Ingen" diff --git a/mayan/apps/common/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/common/locale/de_DE/LC_MESSAGES/django.mo index 66cdb8896f..71b6d4f9ed 100644 Binary files a/mayan/apps/common/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/common/locale/de_DE/LC_MESSAGES/django.po index e2d422ace2..54879789e8 100644 --- a/mayan/apps/common/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/de_DE/LC_MESSAGES/django.po @@ -5,6 +5,7 @@ # Translators: # Translators: # Berny , 2015-2016 +# Jesaja Everling , 2017 # Mathias Behrle , 2014 # Stefan Lodders , 2012 # Tobias Paepke , 2014,2016 @@ -12,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-31 19:01+0000\n" -"Last-Translator: Tobias Paepke \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-24 23:12+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,68 +23,68 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "Allgemein" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "Verfügbare Attribute:" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "Auswahl" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "Filter" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "Auswahl %s kann nicht übertragen werden" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Hinzufügen" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Entfernen" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "%(object)s nicht erstellt, Fehler: %(error)s" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "%(object)s erfolgreich erstellt." -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "%(object)s nicht gelöscht, Fehler: %(error)s." -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "%(object)s erfolgreich gelöscht." -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "%(object)s nicht aktualisiert, Fehler: %(error)s." -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "%(object)s erfolgreich aktualisiert." #: links.py:9 -msgid "About" -msgstr "Über" +msgid "About this" +msgstr "Über Mayan" #: links.py:12 msgid "User details" @@ -102,22 +103,38 @@ msgid "Edit locale profile" msgstr "Lokalisierungsprofil bearbeiten" #: links.py:27 +msgid "Source code" +msgstr "Quelltext" + +#: links.py:31 +msgid "Documentation" +msgstr "Dokumentation" + +#: links.py:35 msgid "Data filters" msgstr "Datenfilter" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "Forum" + +#: links.py:43 views.py:168 msgid "License" msgstr "Lizenz" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "Andere Paket-Lizenzen" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "Einrichtung" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "Werkzeuge" @@ -133,7 +150,21 @@ msgstr "Stunden" msgid "Minutes" msgstr "Minuten" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "Über" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Objekt" @@ -178,6 +209,24 @@ msgid "User locale profiles" msgstr "Benutzerlokalisierungsprofile" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "Protokollierung für alle Apps automatisch freischalten." + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "Zeit für die Verzögerung von Hintergrundaufgaben, die für ihre Fortsetzung auf einen Datenbankcommit warten." + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "Eine Ganzzahl, die die Anzahl der angezeigten Datensätze pro Seite angibt." + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "Datenbackend, das alle Worker benutzen können, um Dateien zu teilen" + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -186,68 +235,50 @@ msgid "" "temporary files." msgstr "Temporäres Verzeichnis zum systemweiten Speichern von Thumbnails, Vorschauen und temporären Dateien. " -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "Datenbackend, das alle Worker benutzen können, um Dateien zu teilen" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "Eine Ganzzahl, die die Anzahl der angezeigten Datensätze pro Seite angibt." - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "Protokollierung für alle Apps automatisch freischalten." - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "Zeit für die Verzögerung von Hintergrundaufgaben, die für ihre Fortsetzung auf einen Datenbankcommit warten." - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "Aktuelle Benutzerdetails" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "Aktuelle Benutzerdetails bearbeiten" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "Aktuelle Benutzerlokalisierungsdetails" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "Aktuelle Benutzerlokalisierungsdetails bearbeiten" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "Filterauswahl" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "Ergebnis für Filter %s" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "Filter nicht gefunden" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "Einrichtungsdetails" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Keine Aktion ausgewählt." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Es muss mindestens ein Element ausgewählt werden." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Kein(e)" diff --git a/mayan/apps/common/locale/en/LC_MESSAGES/django.mo b/mayan/apps/common/locale/en/LC_MESSAGES/django.mo index 6e17d877d8..78ff179f25 100644 Binary files a/mayan/apps/common/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/en/LC_MESSAGES/django.po b/mayan/apps/common/locale/en/LC_MESSAGES/django.po index 63e92bcef2..6c036b79d7 100644 --- a/mayan/apps/common/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2012-12-12 06:05+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,68 +18,68 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "Selection" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, fuzzy, python-format msgid "Unable to transfer selection: %s." msgstr "Unable to add %(selection)s to %(right_list_title)s." -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Add" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Remove" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 #, fuzzy -msgid "About" +msgid "About this" msgstr "about" #: links.py:12 @@ -101,22 +101,38 @@ msgid "Edit locale profile" msgstr "" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "License" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "" @@ -132,7 +148,22 @@ msgstr "" msgid "Minutes" msgstr "" -#: mixins.py:125 +#: menus.py:12 +#, fuzzy +msgid "About" +msgstr "about" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "" @@ -177,6 +208,23 @@ msgid "User locale profiles" msgstr "" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "" + +#: settings.py:38 #, fuzzy #| msgid "" #| "Temporary directory used site wide to store thumbnails, previews and " @@ -190,73 +238,56 @@ msgstr "" "temporary files. If none is specified, one will be created using tempfile." "mkdtemp()" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 #, fuzzy msgid "Current user details" msgstr "current user details" -#: views.py:42 +#: views.py:48 #, fuzzy msgid "Edit current user details" msgstr "edit current user details" -#: views.py:62 +#: views.py:68 #, fuzzy msgid "Current user locale profile details" msgstr "current user details" -#: views.py:69 +#: views.py:75 #, fuzzy msgid "Edit current user locale profile details" msgstr "edit current user details" -#: views.py:113 +#: views.py:131 #, fuzzy #| msgid "Selection" msgid "Filter selection" msgstr "Selection" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #, fuzzy #| msgid "Page not found" msgid "Filter not found" msgstr "Page not found" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "No action selected." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Must select at least one item." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "None" diff --git a/mayan/apps/common/locale/es/LC_MESSAGES/django.mo b/mayan/apps/common/locale/es/LC_MESSAGES/django.mo index 95bcacfccc..12239b1586 100644 Binary files a/mayan/apps/common/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/es/LC_MESSAGES/django.po b/mayan/apps/common/locale/es/LC_MESSAGES/django.po index 3cdc8e7ca4..b82e890a67 100644 --- a/mayan/apps/common/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/es/LC_MESSAGES/django.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:51+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -22,68 +22,68 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "Común" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "Atributos disponibles:" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "Selección" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "Filtro" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "No se ha podido transferir la selección: %s." -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Agregar" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Eliminar" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "%(object)s no se pudo crear, error: %(error)s" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "%(object)s creado con éxito." -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "%(object)s no se pudo borrar, error: %(error)s." -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "%(object)s borrado con éxito." -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "%(object)s no se pudo actualizar, error: %(error)s." -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "%(object)s actualizado con éxito." #: links.py:9 -msgid "About" -msgstr "Acerca de" +msgid "About this" +msgstr "" #: links.py:12 msgid "User details" @@ -102,22 +102,38 @@ msgid "Edit locale profile" msgstr "Editar perfil de localización" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "Filtros de datos" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Licencia" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "Licencias de otros paquetes" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "Configuración" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "Herramientas" @@ -133,7 +149,21 @@ msgstr "Horas" msgid "Minutes" msgstr "Minutos" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "Acerca de" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Objeto" @@ -178,6 +208,24 @@ msgid "User locale profiles" msgstr "Perfiles de localización de usuario" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "Activar bitácoras automáticamente a todas las aplicaciones." + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "Tiempo para retrasar las tareas de fondo que dependen de la propagación de información en la base de datos." + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "Un número entero que especifica cuántos objetos se debe mostrar por página." + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "Un soporte de almacenamiento que todos los 'workers' puedan utilizar para compartir archivos." + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -186,68 +234,50 @@ msgid "" "temporary files." msgstr "Directorio temporero utilizado en todo el sitio para almacenar imágenes en miniatura, visualizaciones y archivos temporeros." -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "Un soporte de almacenamiento que todos los 'workers' puedan utilizar para compartir archivos." - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "Un número entero que especifica cuántos objetos se debe mostrar por página." - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "Activar bitácoras automáticamente a todas las aplicaciones." - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "Tiempo para retrasar las tareas de fondo que dependen de la propagación de información en la base de datos." - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "Detalles del usuario actual" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "Editar los detalles del usuario actual" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "Detalles del perfil de localización del usuario actual" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "Editar los detalles del perfil del usuario local" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "Selección de filtro" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "Resultados para el filtro: %s" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "Filtro no encontrado" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "Elementos de configuración" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Ninguna acción seleccionada." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Debe seleccionar al menos un artículo." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Ninguno" diff --git a/mayan/apps/common/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/common/locale/fa/LC_MESSAGES/django.mo index b5a88d03a7..70b42ffc2d 100644 Binary files a/mayan/apps/common/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/fa/LC_MESSAGES/django.po b/mayan/apps/common/locale/fa/LC_MESSAGES/django.po index 104af55de1..0a1008331c 100644 --- a/mayan/apps/common/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/fa/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -19,68 +19,68 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "خصوصیات موجود" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "انتخاب" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "افزودن" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "حذف" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" -msgstr "درباره" +msgid "About this" +msgstr "" #: links.py:12 msgid "User details" @@ -99,22 +99,38 @@ msgid "Edit locale profile" msgstr "ویرایش پروفایل محلی" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "لیسانس" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "نصب" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "ابزار" @@ -130,7 +146,21 @@ msgstr "ساعات" msgid "Minutes" msgstr "دقایق" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "درباره" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "شیئ" @@ -175,6 +205,24 @@ msgid "User locale profiles" msgstr "پروفایل محلی کاربر" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "محلی که کلیه کاربران جهت به اشتراک گذاری فایل میتوانند استفاه کنند." + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -183,68 +231,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "محلی که کلیه کاربران جهت به اشتراک گذاری فایل میتوانند استفاه کنند." - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "جزئیاتا کاربر فعلی" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "یرایش جزئیات کاربر کنونی" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "شرح پروفایل محلی کاربر فعلی" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "ویرایش شرح پروفایل محلی کاربر فعلی" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "اقلام نصب" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "هیچ عملیاتی action انتخاب نشده است." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "حداقل یک مورد انتخاب شود." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "هیچکدام." diff --git a/mayan/apps/common/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/common/locale/fr/LC_MESSAGES/django.mo index 13d3146c26..a48578ab02 100644 Binary files a/mayan/apps/common/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/fr/LC_MESSAGES/django.po b/mayan/apps/common/locale/fr/LC_MESSAGES/django.po index ff667fccff..fe08fcff23 100644 --- a/mayan/apps/common/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/fr/LC_MESSAGES/django.po @@ -4,6 +4,7 @@ # # Translators: # Translators: +# Christophe CHAUVET , 2016 # Franck Boucher , 2016 # PatrickHetu , 2012 # Pierre Lhoste , 2012 @@ -13,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" @@ -23,68 +24,68 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "Commun" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "Options disponibles" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "Sélection" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "Filtre" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "Impossible de transférer la sélection: %s." -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Ajouter" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Supprimer" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "%(object)s n'a pas été créé, erreur: %(error)s" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "%(object)s, creation réussi." -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "%(object)s non supprimé, erreur: %(error)s." -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "%(object)s, suppression réussie." -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "%(object)s n'a pas été mis à jour, erreur: %(error)s." -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "%(object)s, mise à jour réussie." #: links.py:9 -msgid "About" -msgstr "À propos" +msgid "About this" +msgstr "" #: links.py:12 msgid "User details" @@ -103,22 +104,38 @@ msgid "Edit locale profile" msgstr "Éditer les paramètres régionaux du profil" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "Filtres de données" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Licence" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "Licences des bibliothèques tierces" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "Configuration" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "Outils" @@ -134,7 +151,21 @@ msgstr "Heures" msgid "Minutes" msgstr "Minutes" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "À propos" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Objet" @@ -179,76 +210,76 @@ msgid "User locale profiles" msgstr "Paramètres régionaux des profils utilisateur" #: settings.py:13 -#| msgid "" -#| "ary directory used site wide to store thumbnails, previews and porary es. " -#| "If none is specified, one will be created using pfile.mkdtemp()" -msgid "" -"Temporary directory used site wide to store thumbnails, previews and " -"temporary files." -msgstr "" +msgid "Automatically enable logging to all apps." +msgstr "Activation automatique de la trace pour toutes les applications." -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "Un espace de stockage que tous les agents pourront utiliser pour partager des fichiers." +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "Durée pendant laquelle les tâches d'arrière plan sont différées pour les tâches dépendant d'une mise à jour de la base de données." #: settings.py:27 msgid "An integer specifying how many objects should be displayed per page." msgstr "Valeur entière indiquant combien d'objets sont affichés sur chaque page." #: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "Activation automatique de la trace pour toutes les applications." +msgid "A storage backend that all workers can use to share files." +msgstr "Un espace de stockage que tous les agents pourront utiliser pour partager des fichiers." -#: settings.py:39 +#: settings.py:38 +#| msgid "" +#| "ary directory used site wide to store thumbnails, previews and porary es. " +#| "If none is specified, one will be created using pfile.mkdtemp()" msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "Durée pendant laquelle les tâches d'arrière plan sont différées pour les tâches dépendant d'une mise à jour de la base de données." +"Temporary directory used site wide to store thumbnails, previews and " +"temporary files." +msgstr "Le dossier temporaire est utilisé pour stocker les vignettes, aperçus et fichiers temporaires." -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "Détails de l'utilisateur courant" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "Modifier les détails des utilisateurs actuels" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "Détails des paramètres régionaux de l'utilisateur actuel" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "Éditer le détail des paramètres régionaux de l'utilisateur actuel" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "Sélection du filtre" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "Résultats pour le filtre : %s" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "Filtre non trouvé" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "Paramètres de configuration" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Aucune action sélectionnée." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Vous devez sélectionner au moins un élément." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Aucun" diff --git a/mayan/apps/common/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/common/locale/hu/LC_MESSAGES/django.mo index a87109bddc..ae07d99a9d 100644 Binary files a/mayan/apps/common/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/hu/LC_MESSAGES/django.po b/mayan/apps/common/locale/hu/LC_MESSAGES/django.po index 4254ab7cd9..74e97a0ef7 100644 --- a/mayan/apps/common/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/hu/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -18,67 +18,67 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" +msgid "About this" msgstr "" #: links.py:12 @@ -98,22 +98,38 @@ msgid "Edit locale profile" msgstr "" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "" @@ -129,7 +145,21 @@ msgstr "" msgid "Minutes" msgstr "" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "" @@ -174,6 +204,24 @@ msgid "User locale profiles" msgstr "" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "" + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -182,68 +230,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "" -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "" -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Semmi" diff --git a/mayan/apps/common/locale/id/LC_MESSAGES/django.mo b/mayan/apps/common/locale/id/LC_MESSAGES/django.mo index 3ec12cb127..cb5ed5f62b 100644 Binary files a/mayan/apps/common/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/id/LC_MESSAGES/django.po b/mayan/apps/common/locale/id/LC_MESSAGES/django.po index c09b1e73fb..77f452d7bc 100644 --- a/mayan/apps/common/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,68 +18,68 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "Atribut yang tersedia" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "tambah" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "hapus" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" -msgstr "Tentang" +msgid "About this" +msgstr "" #: links.py:12 msgid "User details" @@ -98,22 +98,38 @@ msgid "Edit locale profile" msgstr "edit profil lokal" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Lisensi" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "" @@ -129,7 +145,21 @@ msgstr "" msgid "Minutes" msgstr "" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "Tentang" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "" @@ -174,6 +204,24 @@ msgid "User locale profiles" msgstr "" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "" + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -182,68 +230,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "tidak ada aksi yang dipilih" -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "pilih salah satu item" -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "" diff --git a/mayan/apps/common/locale/it/LC_MESSAGES/django.mo b/mayan/apps/common/locale/it/LC_MESSAGES/django.mo index cc57276c96..2b5ccd0c5d 100644 Binary files a/mayan/apps/common/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/it/LC_MESSAGES/django.po b/mayan/apps/common/locale/it/LC_MESSAGES/django.po index c1edcfa96e..09a4ae9812 100644 --- a/mayan/apps/common/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/it/LC_MESSAGES/django.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-30 21:18+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,68 +23,68 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "Comune" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "Attributi disponibili:" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "Selezione" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "Filtro" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "Impossibile trasferire la selezione: %s." -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Aggiungi" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Rimuovi" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "%(object)s non creato, errore: %(error)s" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "%(object)s creato con successo.." -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "%(object)s non cancellato, errore: %(error)s." -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "%(object)s cancellato con successo.." -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "%(object)s non aggiornato, errore: %(error)s." -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "%(object)s aggiornato con successo." #: links.py:9 -msgid "About" -msgstr "About" +msgid "About this" +msgstr "" #: links.py:12 msgid "User details" @@ -103,22 +103,38 @@ msgid "Edit locale profile" msgstr "Modifica profilo locale" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "Filtro dati" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Licenza" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "Licenze altri pacchetti" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "Configurazione" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "Strumenti" @@ -134,7 +150,21 @@ msgstr "Orario" msgid "Minutes" msgstr "Minuti" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "About" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Oggetto" @@ -179,6 +209,24 @@ msgid "User locale profiles" msgstr "Profili dell'utente locale" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "Abilita automaticamente i log per tutte le app." + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "Il ritardo per i task in background dipende dalla propagazione del commit su database." + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "Un intero che specifica quanti oggetti devono essere visualizzati per pagina." + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "Un backend di memorizzazione che tutti i lavoratori possono utilizzare per condividere i file." + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -187,68 +235,50 @@ msgid "" "temporary files." msgstr "Directory temporanea utilizzata in tutto il sito per memorizzare, miniature, anteprime e files temporanei" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "Un backend di memorizzazione che tutti i lavoratori possono utilizzare per condividere i file." - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "Un intero che specifica quanti oggetti devono essere visualizzati per pagina." - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "Abilita automaticamente i log per tutte le app." - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "Il ritardo per i task in background dipende dalla propagazione del commit su database." - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "Dettagli dell'attuale utente" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "Modificare i dati dell'utente attuale" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "Dettagli del profilo dell'utente attuale" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "Modificare i dettagli del profilo corrente dell'utente" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "Scegli il filtro" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "Risultati per il filtro: %s" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "Filtro non trovato" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "Impostazione elementi" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Nessuna azione selezionata" -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Devi selezionare un elemento" -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Nessuno" diff --git a/mayan/apps/common/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/common/locale/nl_NL/LC_MESSAGES/django.mo index 91e85e30b4..5b4f00a989 100644 Binary files a/mayan/apps/common/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/common/locale/nl_NL/LC_MESSAGES/django.po index c00f23d2ef..48334f818d 100644 --- a/mayan/apps/common/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/nl_NL/LC_MESSAGES/django.po @@ -5,14 +5,15 @@ # Translators: # Translators: # Evelijn Saaltink , 2016 +# Johan Braeken, 2017 # woei , 2014 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-11-09 15:54+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,68 +21,68 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" -msgstr "" +msgstr "Gemeenschappelijk" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "Beschikbare eigenschappen:" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "Selectie" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "Filter" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." -msgstr "" +msgstr "Niet mogelijk om selectie over te dragen: %s." -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Voeg toe" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Verwijder" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" -msgstr "" +msgstr "%(object)s niet aangemaakt, foutmelding: %(error)s." -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "%(object)s succesvol aangemaakt." -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." -msgstr "" +msgstr "%(object)s niet verwijderd, foutmelding: %(error)s." -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "%(object)s succesbol verwijderd." -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." -msgstr "" +msgstr "%(object)s niet geupdate, foutmelding: %(error)s." -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." -msgstr "" +msgstr "%(object)s werden succesvol geupdate." #: links.py:9 -msgid "About" -msgstr "Informatie" +msgid "About this" +msgstr "" #: links.py:12 msgid "User details" @@ -93,29 +94,45 @@ msgstr "Bewerk details" #: links.py:19 msgid "Locale profile" -msgstr "Lokaal profiel" +msgstr "Landsinstellingen" #: links.py:23 msgid "Edit locale profile" -msgstr "bewerk lokaal profiel" +msgstr "Wijzig landsinstellingen" #: links.py:27 -msgid "Data filters" +msgid "Source code" msgstr "" -#: links.py:31 views.py:150 +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 +msgid "Data filters" +msgstr "Gegevensfilters" + +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Licentie" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "Andere pakketlicensies" -#: links.py:38 +#: links.py:50 msgid "Setup" -msgstr "Setu" +msgstr "Setup" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "Gereedschappen" @@ -131,7 +148,21 @@ msgstr "Uren" msgid "Minutes" msgstr "Minuten" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "Informatie" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Object" @@ -169,83 +200,83 @@ msgstr "Taal" #: models.py:67 msgid "User locale profile" -msgstr "" +msgstr "Gebruikerslandsinstelling" #: models.py:68 msgid "User locale profiles" -msgstr "" +msgstr "Gebruikerslandinstellingen" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "Wachttijd voor achtergrondtaken die afhankelijk zijn van het verbreiden van een database commit." + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "Een natuurlijk getal om aan te geven hoeveel objecten per pagina weergegeven worden." + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "Een opslagbackend die alle werkers kunnen gebruiken om bestanden te delen." + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" msgid "" "Temporary directory used site wide to store thumbnails, previews and " "temporary files." -msgstr "" +msgstr "Globale instelling voor een tijdelijke folder om miniaturen, voorvertoningen en tijdelijke bestanden in op te slaan." -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "Gegevens van huidige gebruiker" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "Bewerk gegevens van huidige gebruiker" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" -msgstr "" +msgstr "Details landinstellingen huidige gebruiker" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" -msgstr "" +msgstr "Wijzig landsinstellingen van de huidige gebruiker" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" -msgstr "" +msgstr "Filterselectie" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" -msgstr "" +msgstr "Resultaten voor filter: %s" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" -msgstr "" +msgstr "Filter niet gevonden" -#: views.py:177 +#: views.py:195 msgid "Setup items" -msgstr "" +msgstr "Setup items" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Geen acties geselecteerd." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Selecteer minimaal een item." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Geen" diff --git a/mayan/apps/common/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/common/locale/pl/LC_MESSAGES/django.mo index 9f9cde7e7c..87a60a31dd 100644 Binary files a/mayan/apps/common/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/pl/LC_MESSAGES/django.po b/mayan/apps/common/locale/pl/LC_MESSAGES/django.po index 06ece6c5fb..ee4c08ca89 100644 --- a/mayan/apps/common/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/pl/LC_MESSAGES/django.po @@ -13,78 +13,78 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "Ustawienia wspólne" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "Dostępne atrybuty:" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "Zaznaczenie" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "Filtr" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "Nie można przenieść zaznaczenia: %s." -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Dodaj" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Usuń" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" -msgstr "Informacje o" +msgid "About this" +msgstr "" #: links.py:12 msgid "User details" @@ -103,22 +103,38 @@ msgid "Edit locale profile" msgstr "Edytuj profil regionalny" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "Filtry danych" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Licencja" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "Pozostałe licencje" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "Ustawienia" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "Narzędzia" @@ -134,7 +150,21 @@ msgstr "Godziny" msgid "Minutes" msgstr "Minuty" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "Informacje o" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Obiekt" @@ -179,6 +209,24 @@ msgid "User locale profiles" msgstr "Profile regionalne użytkownika" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "Włącz dla wszystkich aplikacji automatyczny zapis zdarzeń." + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "Czas opóźnienia wykonania zadań zależnych od operacji na bazie danych." + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "Liczba określająca ile obiektów będzie wyświetlane na stronie." + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "Backend przechowywania umożliwiający wszystkim użytkownikom udostępnianie plików." + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -187,68 +235,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "Backend przechowywania umożliwiający wszystkim użytkownikom udostępnianie plików." - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "Liczba określająca ile obiektów będzie wyświetlane na stronie." - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "Włącz dla wszystkich aplikacji automatyczny zapis zdarzeń." - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "Czas opóźnienia wykonania zadań zależnych od operacji na bazie danych." - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "Dane użytkownika" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "Edytuj dane użytkownika" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "Profil regionalny użytkownika" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "Edytuj profil regionalny użytkownika" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "Wybór filtru" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "Wyniki dla filtru: %s" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "Nie znaleziono filtru" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "Ustawienia elementów" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Nie wybrano żadnego działania" -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Musisz wybrać co najmniej jeden element." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Brak" diff --git a/mayan/apps/common/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/common/locale/pt/LC_MESSAGES/django.mo index fc6e2c3ae1..ba6466da15 100644 Binary files a/mayan/apps/common/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/pt/LC_MESSAGES/django.po b/mayan/apps/common/locale/pt/LC_MESSAGES/django.po index f62d1aeade..c08f3ff7a7 100644 --- a/mayan/apps/common/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/pt/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -21,67 +21,67 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "Seleção" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Adicionar" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Remover" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" +msgid "About this" msgstr "" #: links.py:12 @@ -101,22 +101,38 @@ msgid "Edit locale profile" msgstr "" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Licença" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "Configuração" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "Ferramentas" @@ -132,7 +148,21 @@ msgstr "" msgid "Minutes" msgstr "" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Objeto" @@ -177,6 +207,24 @@ msgid "User locale profiles" msgstr "" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "" + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -185,68 +233,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "Itens de configuração" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Nenhuma ação selecionada." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Deve selecionar pelo menos um item." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Nenhum" diff --git a/mayan/apps/common/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/common/locale/pt_BR/LC_MESSAGES/django.mo index 1fc8a21a78..c25dd43783 100644 Binary files a/mayan/apps/common/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/common/locale/pt_BR/LC_MESSAGES/django.po index 45463a766a..5dda1aa60d 100644 --- a/mayan/apps/common/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/pt_BR/LC_MESSAGES/django.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-11-17 22:46+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,68 +22,68 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "Comúm" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "Atributos disponíveis:" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "Seleção" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "Filtro" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "Não foi possível transferir a seleção: %s." -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Adicionar" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Remover" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "%(object)s não criado, erro: %(error)s" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "%(object)s criado com sucesso." -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "%(object)s não removido, erro: %(error)s." -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "%(object)s removido com sucesso." -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "%(object)s não atualizado, erro: %(error)s." -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "%(object)s atualizado com sucesso." #: links.py:9 -msgid "About" -msgstr "Sobre" +msgid "About this" +msgstr "" #: links.py:12 msgid "User details" @@ -102,22 +102,38 @@ msgid "Edit locale profile" msgstr "Editar perfil Idioma" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "Filtro de dados" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Licença" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "Licenças de outros pacotes" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "Configurações" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "Ferramentas" @@ -133,7 +149,21 @@ msgstr "Hora" msgid "Minutes" msgstr "Minutos" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "Sobre" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Objeto" @@ -178,6 +208,24 @@ msgid "User locale profiles" msgstr "Perfis de localidade do usuário" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "Ativar automaticamente o registro de todos os aplicativos." + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "Tempo para atrasar as tarefas de fundo que dependem da propagação de informação na base de dados." + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "Um número inteiro que especifica quantos objetos se deve mostrar por página." + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "Um suporte de armazenamento que todos os trabalhadores podem usar para compartilhar arquivos." + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -186,68 +234,50 @@ msgid "" "temporary files." msgstr "Pasta temporária utilizada em todo o site para armazenar imagens em miniatura, visualizações e arquivos temporários." -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "Um suporte de armazenamento que todos os trabalhadores podem usar para compartilhar arquivos." - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "Um número inteiro que especifica quantos objetos se deve mostrar por página." - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "Ativar automaticamente o registro de todos os aplicativos." - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "Tempo para atrasar as tarefas de fundo que dependem da propagação de informação na base de dados." - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "Detalhes do usuário atual" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "Editar detalhes do usuário atual" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "Detalhes do perfil de localidade do usuário atual" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "Editar detalhes do perfil de localização do usuário atual" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "Seleção de filtro" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "Resultados para o filtro: %s" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "Filtro não encontrado" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "Itens da Configuração" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Nenhuma ação selecionada." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Deve selecionar pelo menos um item." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Nenhum" diff --git a/mayan/apps/common/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/common/locale/ro_RO/LC_MESSAGES/django.mo index bb5457a5ae..7874e4aa26 100644 Binary files a/mayan/apps/common/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/common/locale/ro_RO/LC_MESSAGES/django.po index b647b83a2b..862f90236a 100644 --- a/mayan/apps/common/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/ro_RO/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -19,68 +19,68 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "selecţie" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Adaugă" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Şterge" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" -msgstr "Despre" +msgid "About this" +msgstr "" #: links.py:12 msgid "User details" @@ -99,22 +99,38 @@ msgid "Edit locale profile" msgstr "" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Licenţă" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "" @@ -130,7 +146,21 @@ msgstr "Ore" msgid "Minutes" msgstr "Minute" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "Despre" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Obiect" @@ -175,6 +205,24 @@ msgid "User locale profiles" msgstr "" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "" + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -183,68 +231,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Nu a fost selectată nici o acţiune." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Trebuie sa selectaţi cel puţin un rând" -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Nici unul" diff --git a/mayan/apps/common/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/common/locale/ru/LC_MESSAGES/django.mo index 91e509bf60..7a4cb5be45 100644 Binary files a/mayan/apps/common/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/ru/LC_MESSAGES/django.po b/mayan/apps/common/locale/ru/LC_MESSAGES/django.po index 2a696dff02..ec601668f7 100644 --- a/mayan/apps/common/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/ru/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" @@ -19,68 +19,68 @@ msgstr "" "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" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "Общий" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "Доступные атрибуты:" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "Выбор" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "Фильтр" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "Невозможно передать выделение: %s." -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Добавить" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Удалить" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "%(object)s не создан, ошибка: %(error)s" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "%(object)s успешно создан." -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "%(object)s не удалён, ошибка: %(error)s." -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "%(object)s успешно удалён." -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "%(object)s не обновлён, ошибка: %(error)s." -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "%(object)s успешно обновлён." #: links.py:9 -msgid "About" -msgstr "Инфо" +msgid "About this" +msgstr "" #: links.py:12 msgid "User details" @@ -99,22 +99,38 @@ msgid "Edit locale profile" msgstr "Редактировать локаль" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "Фильтры данных" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Лицензия" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "Лицензии других пакетов" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "Настройки" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "Инструменты" @@ -130,7 +146,21 @@ msgstr "Часов" msgid "Minutes" msgstr "Минут" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "Инфо" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Объект" @@ -175,6 +205,24 @@ msgid "User locale profiles" msgstr "Профили локали пользователей" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "Автоматически разрешать всем установленным приложениям делать записи в журнале." + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "Время задержки фоновых задач зависящих от процесса распространения записанных в БД данных." + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "Числовое значение указывающее как много объектов может быть отображено на одной странице." + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "Бекенд хранения, который каждый может использовать для хранения файлов." + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -183,68 +231,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "Бекенд хранения, который каждый может использовать для хранения файлов." - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "Числовое значение указывающее как много объектов может быть отображено на одной странице." - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "Автоматически разрешать всем установленным приложениям делать записи в журнале." - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "Время задержки фоновых задач зависящих от процесса распространения записанных в БД данных." - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "Настройки текущего пользователя" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "Редактировать настройки текущего пользователя" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "Настройки локали текущего пользователя" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "Редактировать настройки локали текущего пользователя" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "Фильтр по выбранным" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "Результаты для фильтра: %s" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "Фильтр не найден" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "Элементы настроек" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Никаких действий не выбрано." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Необходимо выбрать хотя бы один элемент." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Ни один" diff --git a/mayan/apps/common/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/common/locale/sl_SI/LC_MESSAGES/django.mo index 835e209426..772a6dadb3 100644 Binary files a/mayan/apps/common/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/common/locale/sl_SI/LC_MESSAGES/django.po index 7b5b6ab0ab..0400f5054a 100644 --- a/mayan/apps/common/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,67 +18,67 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" +msgid "About this" msgstr "" #: links.py:12 @@ -98,22 +98,38 @@ msgid "Edit locale profile" msgstr "" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "" @@ -129,7 +145,21 @@ msgstr "" msgid "Minutes" msgstr "" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "" @@ -174,6 +204,24 @@ msgid "User locale profiles" msgstr "" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "" + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -182,68 +230,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "" -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "" -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "Brez" diff --git a/mayan/apps/common/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/common/locale/vi_VN/LC_MESSAGES/django.mo index a69381cf29..3ca803d0a0 100644 Binary files a/mayan/apps/common/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/common/locale/vi_VN/LC_MESSAGES/django.po index b2783432ce..47b8e88af7 100644 --- a/mayan/apps/common/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/vi_VN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -19,67 +19,67 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "Lựa chọn" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "Thêm" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "Xóa" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" +msgid "About this" msgstr "" #: links.py:12 @@ -99,22 +99,38 @@ msgid "Edit locale profile" msgstr "" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "Bản quyền" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "" @@ -130,7 +146,21 @@ msgstr "" msgid "Minutes" msgstr "" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "Đối tượng" @@ -175,6 +205,24 @@ msgid "User locale profiles" msgstr "" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "" + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -183,68 +231,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "Không thao tác nào được chọn." -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "Cần chọn ít nhất một phần tử." -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "None" diff --git a/mayan/apps/common/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/common/locale/zh_CN/LC_MESSAGES/django.mo index 65b56fb737..a60d24c28d 100644 Binary files a/mayan/apps/common/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/common/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/common/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/common/locale/zh_CN/LC_MESSAGES/django.po index ae9fd5e2bb..620fbe821a 100644 --- a/mayan/apps/common/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/common/locale/zh_CN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:52-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -19,67 +19,67 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:72 settings.py:9 +#: apps.py:76 settings.py:9 msgid "Common" msgstr "" -#: classes.py:53 +#: classes.py:106 msgid "Available attributes: " msgstr "" -#: forms.py:27 +#: forms.py:26 msgid "Selection" msgstr "选择" -#: forms.py:106 +#: forms.py:105 msgid "Filter" msgstr "" -#: generics.py:126 +#: generics.py:133 #, python-format msgid "Unable to transfer selection: %s." msgstr "" -#: generics.py:150 +#: generics.py:157 msgid "Add" msgstr "新增" -#: generics.py:161 +#: generics.py:168 msgid "Remove" msgstr "移除" -#: generics.py:287 +#: generics.py:327 #, python-format msgid "%(object)s not created, error: %(error)s" msgstr "" -#: generics.py:298 +#: generics.py:338 #, python-format msgid "%(object)s created successfully." msgstr "" -#: generics.py:323 +#: generics.py:363 #, python-format msgid "%(object)s not deleted, error: %(error)s." msgstr "" -#: generics.py:334 +#: generics.py:374 #, python-format msgid "%(object)s deleted successfully." msgstr "" -#: generics.py:379 +#: generics.py:419 #, python-format msgid "%(object)s not updated, error: %(error)s." msgstr "" -#: generics.py:390 +#: generics.py:430 #, python-format msgid "%(object)s updated successfully." msgstr "" #: links.py:9 -msgid "About" +msgid "About this" msgstr "" #: links.py:12 @@ -99,22 +99,38 @@ msgid "Edit locale profile" msgstr "" #: links.py:27 +msgid "Source code" +msgstr "" + +#: links.py:31 +msgid "Documentation" +msgstr "" + +#: links.py:35 msgid "Data filters" msgstr "" -#: links.py:31 views.py:150 +#: links.py:39 +msgid "Forum" +msgstr "" + +#: links.py:43 views.py:168 msgid "License" msgstr "许可证" -#: links.py:34 views.py:164 +#: links.py:46 views.py:182 msgid "Other packages licenses" msgstr "" -#: links.py:38 +#: links.py:50 msgid "Setup" msgstr "" -#: links.py:41 views.py:194 +#: links.py:53 +msgid "Support" +msgstr "" + +#: links.py:57 views.py:212 msgid "Tools" msgstr "" @@ -130,7 +146,21 @@ msgstr "小时" msgid "Minutes" msgstr "分钟" -#: mixins.py:125 +#: menus.py:12 +msgid "About" +msgstr "" + +#: mixins.py:74 +#, python-format +msgid "Operation performed on %(count)d object" +msgstr "" + +#: mixins.py:75 +#, python-format +msgid "Operation performed on %(count)d objects" +msgstr "" + +#: mixins.py:235 msgid "Object" msgstr "对象" @@ -175,6 +205,24 @@ msgid "User locale profiles" msgstr "" #: settings.py:13 +msgid "Automatically enable logging to all apps." +msgstr "" + +#: settings.py:19 +msgid "" +"Time to delay background tasks that depend on a database commit to " +"propagate." +msgstr "" + +#: settings.py:27 +msgid "An integer specifying how many objects should be displayed per page." +msgstr "" + +#: settings.py:33 +msgid "A storage backend that all workers can use to share files." +msgstr "" + +#: settings.py:38 #| msgid "" #| "ary directory used site wide to store thumbnails, previews and porary es. " #| "If none is specified, one will be created using pfile.mkdtemp()" @@ -183,68 +231,50 @@ msgid "" "temporary files." msgstr "" -#: settings.py:21 -msgid "A storage backend that all workers can use to share files." -msgstr "" - -#: settings.py:27 -msgid "An integer specifying how many objects should be displayed per page." -msgstr "" - -#: settings.py:33 -msgid "Automatically enable logging to all apps." -msgstr "" - -#: settings.py:39 -msgid "" -"Time to delay background tasks that depend on a database commit to " -"propagate." -msgstr "" - -#: views.py:37 +#: views.py:43 msgid "Current user details" msgstr "" -#: views.py:42 +#: views.py:48 msgid "Edit current user details" msgstr "" -#: views.py:62 +#: views.py:68 msgid "Current user locale profile details" msgstr "" -#: views.py:69 +#: views.py:75 msgid "Edit current user locale profile details" msgstr "" -#: views.py:113 +#: views.py:131 #| msgid "Selection" msgid "Filter selection" msgstr "" -#: views.py:129 +#: views.py:147 #, python-format msgid "Results for filter: %s" msgstr "" -#: views.py:136 +#: views.py:154 #| msgid "Page not found" msgid "Filter not found" msgstr "" -#: views.py:177 +#: views.py:195 msgid "Setup items" msgstr "" -#: views.py:221 +#: views.py:239 msgid "No action selected." msgstr "请选择一个操作" -#: views.py:229 +#: views.py:247 msgid "Must select at least one item." msgstr "至少需要选择一项" -#: widgets.py:50 +#: widgets.py:48 msgid "None" msgstr "无" diff --git a/mayan/apps/common/management/commands/runtests.py b/mayan/apps/common/management/commands/runtests.py deleted file mode 100644 index 44832cdff8..0000000000 --- a/mayan/apps/common/management/commands/runtests.py +++ /dev/null @@ -1,34 +0,0 @@ -from __future__ import unicode_literals - -from django import apps -from django.core import management - - -class Command(management.BaseCommand): - help = 'Run all configured tests for the project.' - - def add_arguments(self, parser): - parser.add_argument( - '--nomigrations', action='store_true', dest='nomigrations', - default=False, - help='Don\'t use migrations when creating the test database.' - ) - - parser.add_argument( - '--reverse', action='store_true', dest='reverse', default=False, - help='Reverses test cases order.' - ) - - def handle(self, *args, **options): - kwargs = {} - if options.get('nomigrations'): - kwargs['nomigrations'] = True - - if options.get('reverse'): - kwargs['reverse'] = True - - test_apps = [app.name for app in apps.apps.get_app_configs() if getattr(app, 'test', False)] - - print 'Testing: {}'.format(', '.join(test_apps)) - - management.call_command('test', *test_apps, interactive=False, **kwargs) diff --git a/mayan/apps/common/mixins.py b/mayan/apps/common/mixins.py index 22edd785a2..0a04321e20 100644 --- a/mayan/apps/common/mixins.py +++ b/mayan/apps/common/mixins.py @@ -34,22 +34,6 @@ class DeleteExtraDataMixin(object): return HttpResponseRedirect(success_url) -class FormExtraKwargsMixin(object): - """ - Mixin that allows a view to pass extra keyword arguments to forms - """ - - form_extra_kwargs = {} - - def get_form_extra_kwargs(self): - return self.form_extra_kwargs - - def get_form_kwargs(self): - result = super(FormExtraKwargsMixin, self).get_form_kwargs() - result.update(self.get_form_extra_kwargs()) - return result - - class ExtraContextMixin(object): """ Mixin that allows views to pass extra context to the template @@ -66,6 +50,22 @@ class ExtraContextMixin(object): return context +class FormExtraKwargsMixin(object): + """ + Mixin that allows a view to pass extra keyword arguments to forms + """ + + form_extra_kwargs = {} + + def get_form_extra_kwargs(self): + return self.form_extra_kwargs + + def get_form_kwargs(self): + result = super(FormExtraKwargsMixin, self).get_form_kwargs() + result.update(self.get_form_extra_kwargs()) + return result + + class MultipleInstanceActionMixin(object): # TODO: Deprecated, replace views using this with # MultipleObjectFormActionView or MultipleObjectConfirmActionView diff --git a/mayan/apps/common/settings.py b/mayan/apps/common/settings.py index a1a16e656f..8edf6c8512 100644 --- a/mayan/apps/common/settings.py +++ b/mayan/apps/common/settings.py @@ -7,26 +7,6 @@ from django.utils.translation import ugettext_lazy as _ from smart_settings import Namespace namespace = Namespace(name='common', label=_('Common')) -setting_temporary_directory = namespace.add_setting( - global_name='COMMON_TEMPORARY_DIRECTORY', default=tempfile.gettempdir(), - help_text=_( - 'Temporary directory used site wide to store thumbnails, previews ' - 'and temporary files.' - ), - is_path=True -) -setting_shared_storage = namespace.add_setting( - global_name='COMMON_SHARED_STORAGE', - default='storage.backends.filebasedstorage.FileBasedStorage', - help_text=_('A storage backend that all workers can use to share files.') -) -setting_paginate_by = namespace.add_setting( - global_name='COMMON_PAGINATE_BY', - default=40, - help_text=_( - 'An integer specifying how many objects should be displayed per page.' - ) -) setting_auto_logging = namespace.add_setting( global_name='COMMON_AUTO_LOGGING', default=True, @@ -40,3 +20,23 @@ settings_db_sync_task_delay = namespace.add_setting( 'propagate.' ) ) +setting_paginate_by = namespace.add_setting( + global_name='COMMON_PAGINATE_BY', + default=40, + help_text=_( + 'An integer specifying how many objects should be displayed per page.' + ) +) +setting_shared_storage = namespace.add_setting( + global_name='COMMON_SHARED_STORAGE', + default='storage.backends.filebasedstorage.FileBasedStorage', + help_text=_('A storage backend that all workers can use to share files.') +) +setting_temporary_directory = namespace.add_setting( + global_name='COMMON_TEMPORARY_DIRECTORY', default=tempfile.gettempdir(), + help_text=_( + 'Temporary directory used site wide to store thumbnails, previews ' + 'and temporary files.' + ), + is_path=True +) diff --git a/mayan/apps/common/tests/mixins.py b/mayan/apps/common/tests/mixins.py index e5c818b1ed..161134eb19 100644 --- a/mayan/apps/common/tests/mixins.py +++ b/mayan/apps/common/tests/mixins.py @@ -3,7 +3,9 @@ from __future__ import unicode_literals import glob import os -import psutil +from django.conf import settings +if getattr(settings, 'COMMON_TEST_FILE_HANDLES', False): + import psutil from ..settings import setting_temporary_directory @@ -32,8 +34,37 @@ class ContentTypeCheckMixin(object): self.client = CustomClient() +class OpenFileCheckMixin(object): + def _get_descriptor_count(self): + process = psutil.Process() + return process.num_fds() + + def _get_open_files(self): + process = psutil.Process() + return process.open_files() + + def setUp(self): + super(OpenFileCheckMixin, self).setUp() + if getattr(settings, 'COMMON_TEST_FILE_HANDLES', False): + self._open_files = self._get_open_files() + + def tearDown(self): + if getattr(settings, 'COMMON_TEST_FILE_HANDLES', False) and not getattr(self, '_skip_file_descriptor_test', False): + for new_open_file in self._get_open_files(): + self.assertFalse( + new_open_file not in self._open_files, + msg='File descriptor leak. The number of file descriptors ' + 'at the start and at the end of the test are not the same.' + ) + + self._skip_file_descriptor_test = False + + super(OpenFileCheckMixin, self).tearDown() + + class TempfileCheckMixin(object): # Ignore the jvmstat instrumentation and GitLab's CI .config files + # Ignore LibreOffice fontconfig cache dir ignore_globs = ('hsperfdata_*', '.config', '.cache') def _get_temporary_entries(self): @@ -57,43 +88,18 @@ class TempfileCheckMixin(object): def setUp(self): super(TempfileCheckMixin, self).setUp() - self._temporary_items = self._get_temporary_entries() + if getattr(settings, 'COMMON_TEST_TEMP_FILES', False): + self._temporary_items = self._get_temporary_entries() def tearDown(self): - final_temporary_items = self._get_temporary_entries() - self.assertEqual( - self._temporary_items, final_temporary_items, - msg='Orphan temporary file. The number of temporary files and/or ' - 'directories at the start and at the end of the test are not the ' - 'same. Orphan entries: {}'.format( - ','.join(final_temporary_items - self._temporary_items) - ) - ) - super(TempfileCheckMixin, self).tearDown() - - -class OpenFileCheckMixin(object): - def _get_descriptor_count(self): - process = psutil.Process() - return process.num_fds() - - def _get_open_files(self): - process = psutil.Process() - return process.open_files() - - def setUp(self): - super(OpenFileCheckMixin, self).setUp() - self._open_files = self._get_open_files() - - def tearDown(self): - if not getattr(self, '_skip_file_descriptor_test', False): - for new_open_file in self._get_open_files(): - self.assertFalse( - new_open_file not in self._open_files, - msg='File descriptor leak. The number of file descriptors ' - 'at the start and at the end of the test are not the same.' + if getattr(settings, 'COMMON_TEST_TEMP_FILES', False): + final_temporary_items = self._get_temporary_entries() + self.assertEqual( + self._temporary_items, final_temporary_items, + msg='Orphan temporary file. The number of temporary files and/or ' + 'directories at the start and at the end of the test are not the ' + 'same. Orphan entries: {}'.format( + ','.join(final_temporary_items - self._temporary_items) ) - - self._skip_file_descriptor_test = False - - super(OpenFileCheckMixin, self).tearDown() + ) + super(TempfileCheckMixin, self).tearDown() diff --git a/mayan/apps/common/tests/runner.py b/mayan/apps/common/tests/runner.py new file mode 100644 index 0000000000..1c47d24574 --- /dev/null +++ b/mayan/apps/common/tests/runner.py @@ -0,0 +1,31 @@ +from __future__ import unicode_literals + +from django import apps +from django.test.runner import DiscoverRunner + + +class MayanTestRunner(DiscoverRunner): + @classmethod + def add_arguments(cls, parser): + DiscoverRunner.add_arguments(parser) + parser.add_argument( + '--mayan-apps', action='store_true', default=False, + dest='mayan_apps', + help='Test all Mayan apps that report to have tests.' + ) + + def __init__(self, *args, **kwargs): + self.mayan_apps = kwargs.pop('mayan_apps') + super(MayanTestRunner, self).__init__(*args, **kwargs) + + def build_suite(self, *args, **kwargs): + # Apps that report they have tests + if self.mayan_apps: + args = list(args) + args[0] = [ + app.name for app in apps.apps.get_app_configs() if getattr( + app, 'has_tests', False + ) + ] + + return super(MayanTestRunner, self).build_suite(*args, **kwargs) diff --git a/mayan/apps/common/tests/test_api.py b/mayan/apps/common/tests/test_api.py index 4b92bd8342..2a8f456b1c 100644 --- a/mayan/apps/common/tests/test_api.py +++ b/mayan/apps/common/tests/test_api.py @@ -2,10 +2,10 @@ from __future__ import unicode_literals from django.core.urlresolvers import reverse -from rest_framework.test import APITestCase +from rest_api.tests import BaseAPITestCase -class CommonAPITestCase(APITestCase): +class CommonAPITestCase(BaseAPITestCase): def test_content_type_list_view(self): response = self.client.get(reverse('rest_api:content-type-list')) self.assertEqual(response.status_code, 200) diff --git a/mayan/apps/common/tests/test_views.py b/mayan/apps/common/tests/test_views.py index 1b4175ff9f..a5716a1c65 100644 --- a/mayan/apps/common/tests/test_views.py +++ b/mayan/apps/common/tests/test_views.py @@ -7,7 +7,6 @@ from django.core.urlresolvers import clear_url_caches, reverse from django.http import HttpResponse from django.template import Context, Template -from permissions import Permission from permissions.models import Role from permissions.tests.literals import TEST_ROLE_LABEL from user_management.tests import ( @@ -37,7 +36,6 @@ class GenericViewTestCase(BaseTestCase): self.role = Role.objects.create(label=TEST_ROLE_LABEL) self.group.user_set.add(self.user) self.role.groups.add(self.group) - Permission.invalidate_cache() def tearDown(self): from mayan.urls import urlpatterns diff --git a/mayan/apps/common/urls.py b/mayan/apps/common/urls.py index 70141c1ceb..94be8df7ce 100644 --- a/mayan/apps/common/urls.py +++ b/mayan/apps/common/urls.py @@ -1,16 +1,14 @@ from __future__ import unicode_literals from django.conf.urls import url -from django.contrib.staticfiles.templatetags.staticfiles import static -from django.views.generic import RedirectView from django.views.i18n import javascript_catalog, set_language -from api_views import APIContentTypeList +from .api_views import APIContentTypeList from .views import ( AboutView, CurrentUserDetailsView, CurrentUserEditView, CurrentUserLocaleProfileDetailsView, CurrentUserLocaleProfileEditView, - FilterResultListView, FilterSelectView, HomeView, LicenseView, - PackagesLicensesView, SetupListView, ToolsListView, + FaviconRedirectView, FilterResultListView, FilterSelectView, HomeView, + LicenseView, PackagesLicensesView, SetupListView, ToolsListView, multi_object_action_view ) @@ -56,9 +54,7 @@ urlpatterns = [ urlpatterns += [ url( - r'^favicon\.ico$', RedirectView.as_view( - permanent=True, url=static('appearance/images/favicon.ico') - ) + r'^favicon\.ico$', FaviconRedirectView.as_view() ), url( r'^jsi18n/(?P\S+?)/$', javascript_catalog, diff --git a/mayan/apps/common/views.py b/mayan/apps/common/views.py index 5e8f47481d..1d63537e7b 100644 --- a/mayan/apps/common/views.py +++ b/mayan/apps/common/views.py @@ -10,14 +10,20 @@ from django.template import RequestContext from django.utils import timezone, translation from django.utils.http import urlencode from django.utils.translation import ugettext_lazy as _, ugettext -from django.views.generic import TemplateView +from django.views.generic import RedirectView, TemplateView from .classes import Filter from .forms import ( FilterForm, LicenseForm, LocaleProfileForm, LocaleProfileForm_view, PackagesLicensesForm, UserForm, UserForm_view ) -from .generics import * # NOQA +from .generics import ( # NOQA + AssignRemoveView, ConfirmView, FormView, MultiFormView, + MultipleObjectConfirmActionView, MultipleObjectFormActionView, + SingleObjectCreateView, SingleObjectDeleteView, + SingleObjectDetailView, SingleObjectEditView, SingleObjectListView, + SimpleView +) from .menus import menu_tools, menu_setup @@ -100,6 +106,18 @@ class CurrentUserLocaleProfileEditView(SingleObjectEditView): return self.request.user.locale_profile +class FaviconRedirectView(RedirectView): + permanent = True + + def get_redirect_url(self, *args, **kwargs): + """ + Hide the static tag import to avoid errors with static file + processors + """ + from django.contrib.staticfiles.templatetags.staticfiles import static + return static('appearance/images/favicon.ico') + + class FilterSelectView(SimpleView): form_class = FilterForm template_name = 'appearance/generic_form.html' diff --git a/mayan/apps/converter/apps.py b/mayan/apps/converter/apps.py index 40b54d6bc0..a04056c761 100644 --- a/mayan/apps/converter/apps.py +++ b/mayan/apps/converter/apps.py @@ -14,8 +14,8 @@ from .licenses import * # NOQA class ConverterApp(MayanAppConfig): + has_tests = True name = 'converter' - test = True verbose_name = _('Converter') def ready(self): diff --git a/mayan/apps/converter/classes.py b/mayan/apps/converter/classes.py index f19d3b7b6b..9ab180e6fe 100644 --- a/mayan/apps/converter/classes.py +++ b/mayan/apps/converter/classes.py @@ -216,6 +216,10 @@ class ConverterBase(object): class BaseTransformation(object): + """ + Transformation can modify the appearance of the document's page preview. + Some transformation available are: Rotate, zoom, resize and crop. + """ arguments = () name = 'base_transformation' _registry = {} diff --git a/mayan/apps/converter/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/ar/LC_MESSAGES/django.mo index 59215be475..d626a59ce6 100644 Binary files a/mayan/apps/converter/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/ar/LC_MESSAGES/django.po b/mayan/apps/converter/locale/ar/LC_MESSAGES/django.po index c1c17b8a73..1f3eee5ed2 100644 --- a/mayan/apps/converter/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/ar/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -19,19 +19,19 @@ msgstr "" "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" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "" @@ -50,35 +50,66 @@ msgstr "" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "تغيير حجم" - -#: classes.py:295 -msgid "Rotate" -msgstr "تدوير" - -#: classes.py:313 -msgid "Zoom" -msgstr "التكبير" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "تغيير حجم" + +#: classes.py:359 +msgid "Rotate" +msgstr "تدوير" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "التكبير" + +#: links.py:35 msgid "Create new transformation" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "تحرير" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "" @@ -131,22 +162,22 @@ msgstr "" msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "" @@ -160,9 +191,6 @@ msgstr "" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/bg/LC_MESSAGES/django.mo index 365ae29165..57882d122e 100644 Binary files a/mayan/apps/converter/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/bg/LC_MESSAGES/django.po b/mayan/apps/converter/locale/bg/LC_MESSAGES/django.po index 0f8cf70816..349edd9fb4 100644 --- a/mayan/apps/converter/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/bg/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -19,19 +19,19 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "" @@ -50,35 +50,66 @@ msgstr "" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "Преоразмеряване" - -#: classes.py:295 -msgid "Rotate" -msgstr "Завъртете" - -#: classes.py:313 -msgid "Zoom" -msgstr "Увеличаване" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "Преоразмеряване" + +#: classes.py:359 +msgid "Rotate" +msgstr "Завъртете" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "Увеличаване" + +#: links.py:35 msgid "Create new transformation" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "Редактиране" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "" @@ -131,22 +162,22 @@ msgstr "" msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "" @@ -160,9 +191,6 @@ msgstr "" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/bs_BA/LC_MESSAGES/django.mo index acd84bd0d0..8ea1eddb89 100644 Binary files a/mayan/apps/converter/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/converter/locale/bs_BA/LC_MESSAGES/django.po index cebc051a54..ea49183ad6 100644 --- a/mayan/apps/converter/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/bs_BA/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -19,19 +19,19 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "" @@ -50,35 +50,66 @@ msgstr "" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "Promjeni veličinu" - -#: classes.py:295 -msgid "Rotate" -msgstr "Rotiraj" - -#: classes.py:313 -msgid "Zoom" -msgstr "Uvećaj" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "Promjeni veličinu" + +#: classes.py:359 +msgid "Rotate" +msgstr "Rotiraj" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "Uvećaj" + +#: links.py:35 msgid "Create new transformation" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "Urediti" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "" @@ -131,22 +162,22 @@ msgstr "" msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "" @@ -160,9 +191,6 @@ msgstr "" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/da/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/da/LC_MESSAGES/django.mo index e4df92419c..f84facde60 100644 Binary files a/mayan/apps/converter/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/da/LC_MESSAGES/django.po b/mayan/apps/converter/locale/da/LC_MESSAGES/django.po index ecd63460e1..f184431c75 100644 --- a/mayan/apps/converter/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/da/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -18,19 +18,19 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "" @@ -49,35 +49,66 @@ msgstr "" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "" - -#: classes.py:295 -msgid "Rotate" -msgstr "" - -#: classes.py:313 -msgid "Zoom" -msgstr "" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 -msgid "Create new transformation" +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "" + +#: classes.py:359 +msgid "Rotate" +msgstr "" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" msgstr "" #: links.py:35 -msgid "Delete" +msgid "Create new transformation" msgstr "" #: links.py:39 +msgid "Delete" +msgstr "" + +#: links.py:43 msgid "Edit" msgstr "" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "" @@ -130,22 +161,22 @@ msgstr "" msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "" @@ -159,9 +190,6 @@ msgstr "" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/de_DE/LC_MESSAGES/django.mo index 620ab439d9..e63bceef49 100644 Binary files a/mayan/apps/converter/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/converter/locale/de_DE/LC_MESSAGES/django.po index 28ef027b85..7fc587f2df 100644 --- a/mayan/apps/converter/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/de_DE/LC_MESSAGES/django.po @@ -4,15 +4,16 @@ # # Translators: # Translators: +# Jesaja Everling , 2017 # Mathias Behrle , 2014 # Tobias Paepke , 2014 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" -"Last-Translator: Mathias Behrle \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-24 23:01+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,19 +21,19 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "Konverter" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "Reihenfolge" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "Transformation" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "Argumente" @@ -51,35 +52,66 @@ msgstr "Kein Office-Dateiformat" msgid "LibreOffice not installed or not found at path: %s" msgstr "LibreOffice nicht installiert oder in Pfad %s nicht gefunden" -#: classes.py:254 -msgid "Resize" -msgstr "Größe ändern" - -#: classes.py:295 -msgid "Rotate" -msgstr "Drehen" - -#: classes.py:313 -msgid "Zoom" -msgstr "Zoom" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "Zuschneiden" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "Drehen" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "Gaußsche Unschärfe" + +#: classes.py:321 +msgid "Mirror" +msgstr "Spiegeln" + +#: classes.py:332 +msgid "Resize" +msgstr "Größe ändern" + +#: classes.py:359 +msgid "Rotate" +msgstr "Drehen" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "Um 90° drehen" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "Um 180° drehen" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "Um 270° drehen" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "Unscharf maskieren" + +#: classes.py:426 +msgid "Zoom" +msgstr "Zoom" + +#: links.py:35 msgid "Create new transformation" msgstr "Neue Transformation erstellen" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "Löschen" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "Bearbeiten" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "Transformationen" @@ -132,22 +164,22 @@ msgstr "Pfad zum Popple Programm pdftoppm" msgid "Enter a valid YAML value." msgstr "Einen gültigen YAML Wert eingeben" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "Transformation \"%(transformation)s\" für %(content_object)s wirklich löschen?" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "Transformation erstellen für %s" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "Transformation \"%(transformation)s\" für %(content_object)s bearbeiten" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "Transformationen von %s" @@ -161,9 +193,6 @@ msgstr "Transformationen von %s" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/en/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/en/LC_MESSAGES/django.mo index cbfcb93b5e..19765c6c82 100644 Binary files a/mayan/apps/converter/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/en/LC_MESSAGES/django.po b/mayan/apps/converter/locale/en/LC_MESSAGES/django.po index 6fb3e78918..8b58c513a7 100644 --- a/mayan/apps/converter/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2012-12-12 06:05+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,19 +18,19 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "" @@ -50,35 +50,69 @@ msgstr "suported file formats" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "Resize" - -#: classes.py:295 -msgid "Rotate" -msgstr "Rotate" - -#: classes.py:313 -msgid "Zoom" -msgstr "Zoom" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "Resize" + +#: classes.py:359 +msgid "Rotate" +msgstr "Rotate" + +#: classes.py:378 +#, fuzzy +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "Rotate by n degress." + +#: classes.py:389 +#, fuzzy +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "Rotate by n degress." + +#: classes.py:400 +#, fuzzy +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "Rotate by n degress." + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "Zoom" + +#: links.py:35 msgid "Create new transformation" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "" @@ -133,22 +167,22 @@ msgstr "Path to the libreoffice program." msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "" @@ -164,9 +198,6 @@ msgstr "" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #, fuzzy #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/es/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/es/LC_MESSAGES/django.mo index 4cfef69e9e..ae05632489 100644 Binary files a/mayan/apps/converter/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/es/LC_MESSAGES/django.po b/mayan/apps/converter/locale/es/LC_MESSAGES/django.po index be3dbda32f..b3e5aa28dc 100644 --- a/mayan/apps/converter/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/es/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-05-09 01:47+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -20,19 +20,19 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "Convertidor" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "Orden" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "Transformación" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "Argumentos" @@ -51,35 +51,66 @@ msgstr "No es un formato de archivo de la oficina." msgid "LibreOffice not installed or not found at path: %s" msgstr "LibreOffice no instalado o no encontrado en: %s" -#: classes.py:254 -msgid "Resize" -msgstr "Cambiar el tamaño" - -#: classes.py:295 -msgid "Rotate" -msgstr "Girar" - -#: classes.py:313 -msgid "Zoom" -msgstr "Ampliar" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "Recortar" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "Cambiar el tamaño" + +#: classes.py:359 +msgid "Rotate" +msgstr "Girar" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "Ampliar" + +#: links.py:35 msgid "Create new transformation" msgstr "Crear nueva transformación" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "Borrar" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "Editar" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "Transformaciones" @@ -132,22 +163,22 @@ msgstr "Ruta al programa pdftoppm de Poppler." msgid "Enter a valid YAML value." msgstr "Entre un valor YAML." -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "¿Borrar transformación \"%(transformation)s\" para: %(content_object)s?" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "Crear transformación para :%s" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "Editar transformación \"%(transformation)s\" para: %(content_object)s" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "Transformaciones para: %s" @@ -161,9 +192,6 @@ msgstr "Transformaciones para: %s" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/fa/LC_MESSAGES/django.mo index 89afae4d8f..90fc5ee887 100644 Binary files a/mayan/apps/converter/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/fa/LC_MESSAGES/django.po b/mayan/apps/converter/locale/fa/LC_MESSAGES/django.po index 7e32dce8b0..1f61c2d8d3 100644 --- a/mayan/apps/converter/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/fa/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -18,19 +18,19 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "ترتیب" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "تبدیلات" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "آرگومانها" @@ -49,35 +49,66 @@ msgstr "" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "تغییر اندازه" - -#: classes.py:295 -msgid "Rotate" -msgstr "چرخاندن" - -#: classes.py:313 -msgid "Zoom" -msgstr "بزرگ/کوچک نمایی" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "تغییر اندازه" + +#: classes.py:359 +msgid "Rotate" +msgstr "چرخاندن" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "بزرگ/کوچک نمایی" + +#: links.py:35 msgid "Create new transformation" msgstr "ایجاد تبدیلات چدید" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "حذف" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "ویرایش" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "تبدیلات" @@ -130,22 +161,22 @@ msgstr "محل Popple نرم افزار pdftoppm." msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "تبدیلات برای : %s" @@ -159,9 +190,6 @@ msgstr "تبدیلات برای : %s" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/fr/LC_MESSAGES/django.mo index c87b7bb1da..e64c4e74af 100644 Binary files a/mayan/apps/converter/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/fr/LC_MESSAGES/django.po b/mayan/apps/converter/locale/fr/LC_MESSAGES/django.po index 6d585245f6..b9e75c2779 100644 --- a/mayan/apps/converter/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/fr/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" -"Last-Translator: Thierry Schott \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,19 +20,19 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "Convertisseur" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "Ordre" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "Transformation" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "Arguments" @@ -51,35 +51,66 @@ msgstr "Format de fichier non reconnu." msgid "LibreOffice not installed or not found at path: %s" msgstr "LibreOffice n'est pas installé ou n'a pas été trouvé à l'emplacement : %s" -#: classes.py:254 -msgid "Resize" -msgstr "Redimensionner" - -#: classes.py:295 -msgid "Rotate" -msgstr "Rotation" - -#: classes.py:313 -msgid "Zoom" -msgstr "Zoom" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "Découper" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "Redimensionner" + +#: classes.py:359 +msgid "Rotate" +msgstr "Rotation" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "Zoom" + +#: links.py:35 msgid "Create new transformation" msgstr "Créer une nouvelle transformation" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "Suppression" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "Modifier" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "Transformations" @@ -132,22 +163,22 @@ msgstr "Chemin pour le programme Popple pdftoppm" msgid "Enter a valid YAML value." msgstr "Saisissez une valeur YAML valide." -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "Êtes vous certain de vouloir supprimer la transformation \"%(transformation)s\" pour : %(content_object)s ?" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "Créer une nouvelle transformation pour : %s" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "Modifier la transformation \"%(transformation)s\" pour : %(content_object)s" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "Transformations pour : %s" @@ -161,9 +192,6 @@ msgstr "Transformations pour : %s" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/hu/LC_MESSAGES/django.mo index 3d32340421..7ac2baaf57 100644 Binary files a/mayan/apps/converter/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/hu/LC_MESSAGES/django.po b/mayan/apps/converter/locale/hu/LC_MESSAGES/django.po index 6fd4505ed4..d0af9661fa 100644 --- a/mayan/apps/converter/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/hu/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2015-08-20 19:29+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -18,19 +18,19 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "" @@ -49,35 +49,66 @@ msgstr "" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "" - -#: classes.py:295 -msgid "Rotate" -msgstr "" - -#: classes.py:313 -msgid "Zoom" -msgstr "" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 -msgid "Create new transformation" +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "" + +#: classes.py:359 +msgid "Rotate" +msgstr "" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" msgstr "" #: links.py:35 -msgid "Delete" +msgid "Create new transformation" msgstr "" #: links.py:39 +msgid "Delete" +msgstr "" + +#: links.py:43 msgid "Edit" msgstr "" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "" @@ -130,22 +161,22 @@ msgstr "" msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "" @@ -159,9 +190,6 @@ msgstr "" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/id/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/id/LC_MESSAGES/django.mo index 06d2ace2df..a312c67839 100644 Binary files a/mayan/apps/converter/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/id/LC_MESSAGES/django.po b/mayan/apps/converter/locale/id/LC_MESSAGES/django.po index 1e774225c9..8e2371f773 100644 --- a/mayan/apps/converter/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2015-08-20 19:29+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,19 +18,19 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "" @@ -49,35 +49,66 @@ msgstr "" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "" - -#: classes.py:295 -msgid "Rotate" -msgstr "" - -#: classes.py:313 -msgid "Zoom" -msgstr "" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 -msgid "Create new transformation" +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "" + +#: classes.py:359 +msgid "Rotate" +msgstr "" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" msgstr "" #: links.py:35 -msgid "Delete" +msgid "Create new transformation" msgstr "" #: links.py:39 +msgid "Delete" +msgstr "" + +#: links.py:43 msgid "Edit" msgstr "" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "" @@ -130,22 +161,22 @@ msgstr "" msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "" @@ -159,9 +190,6 @@ msgstr "" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/it/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/it/LC_MESSAGES/django.mo index 0880c9dbf9..370d990854 100644 Binary files a/mayan/apps/converter/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/it/LC_MESSAGES/django.po b/mayan/apps/converter/locale/it/LC_MESSAGES/django.po index 4f6301d247..dffdf1e0d1 100644 --- a/mayan/apps/converter/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/it/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-09-24 10:31+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,19 +20,19 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "Convertitore" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "Ordine" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "Trasformazione" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "Argomenti" @@ -51,35 +51,66 @@ msgstr "Non è un formato di file office" msgid "LibreOffice not installed or not found at path: %s" msgstr "LibreOffice non installato o non trovato nel percorso: %s" -#: classes.py:254 -msgid "Resize" -msgstr "Ridimensiona" - -#: classes.py:295 -msgid "Rotate" -msgstr "Ruotare" - -#: classes.py:313 -msgid "Zoom" -msgstr "Zoom" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "Taglia" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "Ridimensiona" + +#: classes.py:359 +msgid "Rotate" +msgstr "Ruotare" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "Zoom" + +#: links.py:35 msgid "Create new transformation" msgstr "Crea nuova trasformazione" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "Cancella" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "Modifica" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "Trasformazioni" @@ -132,22 +163,22 @@ msgstr "Percorso per il programma Popple" msgid "Enter a valid YAML value." msgstr "Inserisci un valore YAML valido." -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "Cancellare le trasformazioni \"%(transformation)s\" per: %(content_object)s?" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "Crea una nuove trasformazioni per: %s" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "Modifica le trasformazioni \"%(transformation)s\" per: %(content_object)s" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "Trasformazione per: %s" @@ -161,9 +192,6 @@ msgstr "Trasformazione per: %s" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/nl_NL/LC_MESSAGES/django.mo index 1f65b33f34..73511323fc 100644 Binary files a/mayan/apps/converter/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/converter/locale/nl_NL/LC_MESSAGES/django.po index 6813ca5a78..61bca6c4c0 100644 --- a/mayan/apps/converter/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/nl_NL/LC_MESSAGES/django.po @@ -5,15 +5,16 @@ # Translators: # Translators: # Evelijn Saaltink , 2016 +# Johan Braeken, 2017 # Lucas Weel , 2013 # woei , 2014 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-11-09 16:40+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,66 +22,97 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "Converter" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "Volgorde" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "Transformatie" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "Argumenten" #: backends/python.py:86 backends/python.py:100 #, python-format msgid "Exception determining PDF page count; %s" -msgstr "" +msgstr "Exceptie bij het bepalen van aan aantal bladzijden van de PDF: %s" #: classes.py:97 #| msgid "suported file formats" msgid "Not an office file format." -msgstr "" +msgstr "Geen office bestandsformaat." #: classes.py:120 #, python-format msgid "LibreOffice not installed or not found at path: %s" -msgstr "" +msgstr "LibreOffice niet geënstalleerd of niet gevonden in pad: %s" -#: classes.py:254 -msgid "Resize" -msgstr "Afmeting wijzigen" - -#: classes.py:295 -msgid "Rotate" -msgstr "Roteren" - -#: classes.py:313 -msgid "Zoom" -msgstr "Inzoomen" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "Bijsnijden" -#: links.py:31 -msgid "Create new transformation" +#: classes.py:299 +msgid "Flip" msgstr "" +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "Afmeting wijzigen" + +#: classes.py:359 +msgid "Rotate" +msgstr "Roteren" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "Inzoomen" + #: links.py:35 +msgid "Create new transformation" +msgstr "Maak een nieuwe transformatie aan" + +#: links.py:39 msgid "Delete" msgstr "Verwijder" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "bewerken" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "Transformaties" @@ -88,7 +120,7 @@ msgstr "Transformaties" msgid "" "Order in which the transformations will be executed. If left unchanged, an " "automatic order value will be assigned." -msgstr "" +msgstr "Volgorde waarin de transformaties worden uitgevoerd. Indien ongewijzigd zal automatisch een volgorde toegekend worden." #: models.py:38 msgid "Name" @@ -98,11 +130,11 @@ msgstr "Naam" msgid "" "Enter the arguments for the transformation as a YAML dictionary. ie: " "{\"degrees\": 180}" -msgstr "" +msgstr "Voer de argumenten voor de transformatie in als een YAML statement, bijvoorbeeld: {\"degrees\": 180}" #: permissions.py:10 msgid "Create new transformations" -msgstr "" +msgstr "Maak nieuwe transformaties aan" #: permissions.py:13 msgid "Delete transformations" @@ -110,7 +142,7 @@ msgstr "Transformaties verwijderen" #: permissions.py:16 msgid "Edit transformations" -msgstr "" +msgstr "Wijzig transformaties" #: permissions.py:19 #| msgid "Raw application information" @@ -119,7 +151,7 @@ msgstr "Bekijk bestaande transformaties" #: settings.py:10 msgid "Graphics conversion backend to use." -msgstr "" +msgstr "Te gebruiken backend voor grafische conversie." #: settings.py:16 msgid "Path to the libreoffice program." @@ -133,22 +165,22 @@ msgstr "Pad naar het Popple-programma pdftoppm." msgid "Enter a valid YAML value." msgstr "Voer een geldige YAML-waarde in." -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" -msgstr "" +msgstr "Transformatie verwijderen \"%(transformation)s\" voor: %(content_object)s?" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" -msgstr "" +msgstr "Maak een nieuwe transformatie aan voor: %s" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" -msgstr "" +msgstr "Wijzig transformatie \"%(transformation)s\" voor: %(content_object)s" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "Transformaties voor: %s" @@ -162,9 +194,6 @@ msgstr "Transformaties voor: %s" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/pl/LC_MESSAGES/django.mo index addab585d1..d889b8b60a 100644 Binary files a/mayan/apps/converter/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/pl/LC_MESSAGES/django.po b/mayan/apps/converter/locale/pl/LC_MESSAGES/django.po index 0395e60203..c1b773fc03 100644 --- a/mayan/apps/converter/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/pl/LC_MESSAGES/django.po @@ -10,29 +10,29 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" -"Last-Translator: Wojtek Warczakowski \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "Konwerter" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "Kolejność" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "Transformacja" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "Argumenty" @@ -51,35 +51,66 @@ msgstr "Format niezgodny z formatem plików LibreOffice." msgid "LibreOffice not installed or not found at path: %s" msgstr "LibreOffice nie został zainstalowany lub nie znaleziono ścieżki: %s" -#: classes.py:254 -msgid "Resize" -msgstr "Zmiana rozmiaru" - -#: classes.py:295 -msgid "Rotate" -msgstr "Obrócenie" - -#: classes.py:313 -msgid "Zoom" -msgstr "Powiększenie" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "Przycięcie" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "Zmiana rozmiaru" + +#: classes.py:359 +msgid "Rotate" +msgstr "Obrócenie" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "Powiększenie" + +#: links.py:35 msgid "Create new transformation" msgstr "Utwórz nową transformację" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "Usuń" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "Edytuj" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "Transformacje" @@ -132,22 +163,22 @@ msgstr "Ścieżka do programu pdftoppm z pakietu Poppler." msgid "Enter a valid YAML value." msgstr "Wprowadź poprawną wartość YAML." -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "Usunąć transformację \"%(transformation)s\" dla: %(content_object)s?" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "Utwórz nową transformację dla: %s" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "Edycja transformacji \"%(transformation)s\" dla: %(content_object)s" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "Transformacje dla: %s" @@ -161,9 +192,6 @@ msgstr "Transformacje dla: %s" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/pt/LC_MESSAGES/django.mo index 78311170ab..7c6fb83525 100644 Binary files a/mayan/apps/converter/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/pt/LC_MESSAGES/django.po b/mayan/apps/converter/locale/pt/LC_MESSAGES/django.po index 6d9478b3c6..1f83e9c056 100644 --- a/mayan/apps/converter/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/pt/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -21,19 +21,19 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "" @@ -52,35 +52,66 @@ msgstr "" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "Redimensionar" - -#: classes.py:295 -msgid "Rotate" -msgstr "Rodar" - -#: classes.py:313 -msgid "Zoom" -msgstr "Zoom" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "Redimensionar" + +#: classes.py:359 +msgid "Rotate" +msgstr "Rodar" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "Zoom" + +#: links.py:35 msgid "Create new transformation" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "Eliminar" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "Editar" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "" @@ -133,22 +164,22 @@ msgstr "" msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "" @@ -162,9 +193,6 @@ msgstr "" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/pt_BR/LC_MESSAGES/django.mo index f53f134c0e..0ab900755c 100644 Binary files a/mayan/apps/converter/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/converter/locale/pt_BR/LC_MESSAGES/django.po index 9b1a8a9cae..073ba62fcc 100644 --- a/mayan/apps/converter/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/pt_BR/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-11-17 22:48+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,19 +21,19 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "Conversor" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "Ordem" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "Transformação" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "Argumentos" @@ -52,35 +52,66 @@ msgstr "Não é um formato de arquivo de escritório." msgid "LibreOffice not installed or not found at path: %s" msgstr "LibreOffice não instalado ou não encontrado no caminho: %s" -#: classes.py:254 -msgid "Resize" -msgstr "Redimensionar" - -#: classes.py:295 -msgid "Rotate" -msgstr "Rotacionar" - -#: classes.py:313 -msgid "Zoom" -msgstr "Ampliar" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "Recortar" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "Redimensionar" + +#: classes.py:359 +msgid "Rotate" +msgstr "Rotacionar" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "Ampliar" + +#: links.py:35 msgid "Create new transformation" msgstr "Criar nova transformação" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "Excluir" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "Editar" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "Transformações" @@ -133,22 +164,22 @@ msgstr "Caminho para o programa pdftoppm de Popple." msgid "Enter a valid YAML value." msgstr "Entre com um valor YAML válido." -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "Excluir transformaçãa \"%(transformation)s\" para: %(content_object)s?" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "Criar nova transformação para: %s" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "Editar transformação \"%(transformation)s\" para: %(content_object)s" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "Transformações para: %s" @@ -162,9 +193,6 @@ msgstr "Transformações para: %s" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/ro_RO/LC_MESSAGES/django.mo index 213bccd870..c2b3cc998c 100644 Binary files a/mayan/apps/converter/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/converter/locale/ro_RO/LC_MESSAGES/django.po index 165cc3859d..6ade9c434e 100644 --- a/mayan/apps/converter/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/ro_RO/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-04-17 09:43+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -19,19 +19,19 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "" @@ -50,35 +50,66 @@ msgstr "" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "Redimensionarea" - -#: classes.py:295 -msgid "Rotate" -msgstr "Roti" - -#: classes.py:313 -msgid "Zoom" -msgstr "Zoom" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "Redimensionarea" + +#: classes.py:359 +msgid "Rotate" +msgstr "Roti" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "Zoom" + +#: links.py:35 msgid "Create new transformation" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "Șterge" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "Editează" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "" @@ -131,22 +162,22 @@ msgstr "" msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "" @@ -160,9 +191,6 @@ msgstr "" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/ru/LC_MESSAGES/django.mo index 00b91fb808..f4e5c171a5 100644 Binary files a/mayan/apps/converter/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/ru/LC_MESSAGES/django.po b/mayan/apps/converter/locale/ru/LC_MESSAGES/django.po index 06df947843..2689164a33 100644 --- a/mayan/apps/converter/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/ru/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-07-19 20:00+0000\n" -"Last-Translator: lilo.panic\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,19 +19,19 @@ msgstr "" "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" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "Конвертер" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "Порядок" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "Преобразование" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "Аргументы" @@ -50,35 +50,66 @@ msgstr "Не является файлом офисного формата." msgid "LibreOffice not installed or not found at path: %s" msgstr "LibreOffice не установлен, или не найден по пути: %s" -#: classes.py:254 -msgid "Resize" -msgstr "Изменение размера" - -#: classes.py:295 -msgid "Rotate" -msgstr "Вращать" - -#: classes.py:313 -msgid "Zoom" -msgstr "Увеличить" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "Кадрировать" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "Изменение размера" + +#: classes.py:359 +msgid "Rotate" +msgstr "Вращать" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "Увеличить" + +#: links.py:35 msgid "Create new transformation" msgstr "Создать новое преобразование" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "Удалить" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "Редактировать" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "Преобразования" @@ -131,22 +162,22 @@ msgstr "Путь до программы Popple pdftoppm." msgid "Enter a valid YAML value." msgstr "Введите допустимое YAML-значение." -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "Удалить преобразование \"%(transformation)s\" для: %(content_object)s?" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "Создать новое преобразование для: %s" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "Изменить преобразование \"%(transformation)s\" for: %(content_object)sjavascript:;" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "Преобразования для: %s" @@ -160,9 +191,6 @@ msgstr "Преобразования для: %s" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/sl_SI/LC_MESSAGES/django.mo index f3668dcd27..04bdcced1c 100644 Binary files a/mayan/apps/converter/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/converter/locale/sl_SI/LC_MESSAGES/django.po index f8701f5130..ef5336e33e 100644 --- a/mayan/apps/converter/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,19 +18,19 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "" @@ -49,35 +49,66 @@ msgstr "" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "" - -#: classes.py:295 -msgid "Rotate" -msgstr "" - -#: classes.py:313 -msgid "Zoom" -msgstr "" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 -msgid "Create new transformation" +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "" + +#: classes.py:359 +msgid "Rotate" +msgstr "" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" msgstr "" #: links.py:35 -msgid "Delete" +msgid "Create new transformation" msgstr "" #: links.py:39 +msgid "Delete" +msgstr "" + +#: links.py:43 msgid "Edit" msgstr "" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "" @@ -130,22 +161,22 @@ msgstr "" msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "" @@ -159,9 +190,6 @@ msgstr "" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/vi_VN/LC_MESSAGES/django.mo index 5e6d060832..8c4e9dd644 100644 Binary files a/mayan/apps/converter/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/converter/locale/vi_VN/LC_MESSAGES/django.po index 261c26b825..b1c0d4e5be 100644 --- a/mayan/apps/converter/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/vi_VN/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -18,19 +18,19 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "" @@ -49,35 +49,66 @@ msgstr "" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "" - -#: classes.py:295 -msgid "Rotate" -msgstr "" - -#: classes.py:313 -msgid "Zoom" -msgstr "" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 -msgid "Create new transformation" +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "" + +#: classes.py:359 +msgid "Rotate" +msgstr "" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" msgstr "" #: links.py:35 -msgid "Delete" +msgid "Create new transformation" msgstr "" #: links.py:39 +msgid "Delete" +msgstr "" + +#: links.py:43 msgid "Edit" msgstr "Sửa" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "" @@ -130,22 +161,22 @@ msgstr "" msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "" @@ -159,9 +190,6 @@ msgstr "" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/converter/locale/zh_CN/LC_MESSAGES/django.mo index 74768e8579..71af604dd3 100644 Binary files a/mayan/apps/converter/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/converter/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/converter/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/converter/locale/zh_CN/LC_MESSAGES/django.po index 9288501a04..47d81b9a3c 100644 --- a/mayan/apps/converter/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/converter/locale/zh_CN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:06+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -19,19 +19,19 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:18 permissions.py:7 settings.py:7 +#: apps.py:19 permissions.py:7 settings.py:7 msgid "Converter" msgstr "" -#: apps.py:38 models.py:34 +#: apps.py:26 models.py:34 msgid "Order" msgstr "" -#: apps.py:40 models.py:64 +#: apps.py:28 models.py:64 msgid "Transformation" msgstr "" -#: apps.py:44 models.py:44 +#: apps.py:32 models.py:44 msgid "Arguments" msgstr "" @@ -50,35 +50,66 @@ msgstr "" msgid "LibreOffice not installed or not found at path: %s" msgstr "" -#: classes.py:254 -msgid "Resize" -msgstr "调整大小" - -#: classes.py:295 -msgid "Rotate" -msgstr "旋转" - -#: classes.py:313 -msgid "Zoom" -msgstr "缩放" - -#: classes.py:333 +#: classes.py:286 msgid "Crop" msgstr "" -#: links.py:31 +#: classes.py:299 +msgid "Flip" +msgstr "" + +#: classes.py:310 +msgid "Gaussian blur" +msgstr "" + +#: classes.py:321 +msgid "Mirror" +msgstr "" + +#: classes.py:332 +msgid "Resize" +msgstr "调整大小" + +#: classes.py:359 +msgid "Rotate" +msgstr "旋转" + +#: classes.py:378 +#| msgid "Rotate by n degress." +msgid "Rotate 90 degrees" +msgstr "" + +#: classes.py:389 +#| msgid "Rotate by n degress." +msgid "Rotate 180 degrees" +msgstr "" + +#: classes.py:400 +#| msgid "Rotate by n degress." +msgid "Rotate 270 degrees" +msgstr "" + +#: classes.py:410 +msgid "Unsharp masking" +msgstr "" + +#: classes.py:426 +msgid "Zoom" +msgstr "缩放" + +#: links.py:35 msgid "Create new transformation" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Delete" msgstr "" -#: links.py:39 +#: links.py:43 msgid "Edit" msgstr "" -#: links.py:43 models.py:65 +#: links.py:47 models.py:65 msgid "Transformations" msgstr "" @@ -131,22 +162,22 @@ msgstr "" msgid "Enter a valid YAML value." msgstr "" -#: views.py:71 +#: views.py:64 #, python-format msgid "Delete transformation \"%(transformation)s\" for: %(content_object)s?" msgstr "" -#: views.py:139 +#: views.py:127 #, python-format msgid "Create new transformation for: %s" msgstr "" -#: views.py:192 +#: views.py:175 #, python-format msgid "Edit transformation \"%(transformation)s\" for: %(content_object)s" msgstr "" -#: views.py:238 +#: views.py:216 #, python-format msgid "Transformations for: %s" msgstr "" @@ -160,9 +191,6 @@ msgstr "" #~ msgid "Height" #~ msgstr "height" -#~ msgid "Rotate by n degress." -#~ msgstr "Rotate by n degress." - #~ msgid "Degrees" #~ msgstr "degrees" diff --git a/mayan/apps/converter/models.py b/mayan/apps/converter/models.py index 817ee605ee..32faf5ac45 100644 --- a/mayan/apps/converter/models.py +++ b/mayan/apps/converter/models.py @@ -21,8 +21,14 @@ class Transformation(models.Model): """ Model that stores the transformation and transformation arguments for a given object + Fields: + * order - Order of a Transformation - In case there are multiple + transformations for an object, this field list the order at which + they will be execute. + * arguments - Arguments of a Transformation - An optional field to hold a + transformation argument. Example: if a page is rotated with the Rotation + transformation, this field will show by how many degrees it was rotated. """ - content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() content_object = GenericForeignKey('content_type', 'object_id') diff --git a/mayan/apps/django_gpg/api_views.py b/mayan/apps/django_gpg/api_views.py new file mode 100644 index 0000000000..bb8762f0a0 --- /dev/null +++ b/mayan/apps/django_gpg/api_views.py @@ -0,0 +1,59 @@ +from __future__ import absolute_import, unicode_literals + +from rest_framework import generics + +from rest_api.filters import MayanObjectPermissionsFilter +from rest_api.permissions import MayanPermission + +from .models import Key +from .permissions import ( + permission_key_delete, permission_key_upload, permission_key_view +) +from .serializers import KeySerializer + + +class APIKeyListView(generics.ListCreateAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = { + 'GET': (permission_key_view,), + 'POST': (permission_key_upload,) + } + permission_classes = (MayanPermission,) + queryset = Key.objects.all() + serializer_class = KeySerializer + + def get(self, *args, **kwargs): + """ + Returns a list of all the keys. + """ + return super(APIKeyListView, self).get(*args, **kwargs) + + def post(self, *args, **kwargs): + """ + Upload a new key. + """ + return super(APIKeyListView, self).post(*args, **kwargs) + + +class APIKeyView(generics.RetrieveDestroyAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = { + 'DELETE': (permission_key_delete,), + 'GET': (permission_key_view,), + } + queryset = Key.objects.all() + serializer_class = KeySerializer + + def delete(self, *args, **kwargs): + """ + Delete the selected key. + """ + + return super(APIKeyView, self).delete(*args, **kwargs) + + def get(self, *args, **kwargs): + """ + Return the details of the selected key. + """ + + return super(APIKeyView, self).get(*args, **kwargs) diff --git a/mayan/apps/django_gpg/apps.py b/mayan/apps/django_gpg/apps.py index b9e5883a73..14de67f9ad 100644 --- a/mayan/apps/django_gpg/apps.py +++ b/mayan/apps/django_gpg/apps.py @@ -9,6 +9,7 @@ from common import ( MayanAppConfig, menu_facet, menu_object, menu_setup, menu_sidebar ) from navigation import SourceColumn +from rest_api.classes import APIEndPoint from .classes import KeyStub from .links import ( @@ -25,13 +26,14 @@ from .permissions import ( class DjangoGPGApp(MayanAppConfig): app_url = 'gpg' + has_tests = True name = 'django_gpg' - test = True verbose_name = _('Django GPG') def ready(self): super(DjangoGPGApp, self).ready() + APIEndPoint(app=self, version_string='1') Key = self.get_model('Key') ModelPermission.register( diff --git a/mayan/apps/django_gpg/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/ar/LC_MESSAGES/django.mo index b7c47be34f..826dd5ce02 100644 Binary files a/mayan/apps/django_gpg/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/ar/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/ar/LC_MESSAGES/django.po index 98a7589b80..7642e07260 100644 --- a/mayan/apps/django_gpg/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/ar/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Mohammed ALDOUB , 2013 @@ -9,45 +9,47 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/" +"ar/)\n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "Key ID" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "" @@ -96,7 +98,6 @@ msgid "Key management" msgstr "Key management" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -161,7 +162,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -194,7 +194,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -203,7 +202,6 @@ msgid "View keys" msgstr "View keys" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "" @@ -216,13 +214,11 @@ msgid "Path to the GPG binary." msgstr "" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -233,7 +229,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -243,7 +238,6 @@ msgstr "Import key" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -287,12 +281,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/bg/LC_MESSAGES/django.mo index 2e72b8837e..0d0c628f47 100644 Binary files a/mayan/apps/django_gpg/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/bg/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/bg/LC_MESSAGES/django.po index 6f19291860..2d95d063b3 100644 --- a/mayan/apps/django_gpg/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/bg/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Pavlin Koldamov , 2012 @@ -9,45 +9,46 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" +"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "Ключ ID" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "" @@ -96,7 +97,6 @@ msgid "Key management" msgstr "Управление на ключове" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -161,7 +161,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -194,7 +193,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -203,7 +201,6 @@ msgid "View keys" msgstr "Виж ключове" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "Подписи" @@ -216,13 +213,11 @@ msgid "Path to the GPG binary." msgstr "" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -233,7 +228,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -243,7 +237,6 @@ msgstr "Внасяне на ключ" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -287,12 +280,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/bs_BA/LC_MESSAGES/django.mo index b683257435..a9900b24fe 100644 Binary files a/mayan/apps/django_gpg/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/bs_BA/LC_MESSAGES/django.po index d6285aa2ae..725d141917 100644 --- a/mayan/apps/django_gpg/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/bs_BA/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # www.ping.ba , 2013 @@ -9,45 +9,47 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" +"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/" +"rosarior/mayan-edms/language/bs_BA/)\n" +"Language: bs_BA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bs_BA\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" +"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" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "ID ključa" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "" @@ -96,7 +98,6 @@ msgid "Key management" msgstr "Upravljanje ključevima" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -161,7 +162,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -194,7 +194,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -203,26 +202,25 @@ msgid "View keys" msgstr "Pogledaj ključeve" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "" #: settings.py:15 msgid "Home directory used to store keys as well as configuration files." -msgstr "Home direktorij se koristi za pohranu ključeva, kao i konfiguracijskih datoteka." +msgstr "" +"Home direktorij se koristi za pohranu ključeva, kao i konfiguracijskih " +"datoteka." #: settings.py:21 msgid "Path to the GPG binary." msgstr "" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -233,7 +231,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -243,7 +240,6 @@ msgstr "Importuj ključ" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -287,12 +283,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/da/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/da/LC_MESSAGES/django.mo index 85609690ba..5a8000104b 100644 Binary files a/mayan/apps/django_gpg/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/da/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/da/LC_MESSAGES/django.po index 0379b6f277..6d186dcbe6 100644 --- a/mayan/apps/django_gpg/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/da/LC_MESSAGES/django.po @@ -1,52 +1,53 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" +"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/" +"da/)\n" +"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "" @@ -95,7 +96,6 @@ msgid "Key management" msgstr "" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -160,7 +160,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -193,7 +192,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -202,7 +200,6 @@ msgid "View keys" msgstr "" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "" @@ -215,13 +212,11 @@ msgid "Path to the GPG binary." msgstr "" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -232,7 +227,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -242,7 +236,6 @@ msgstr "" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -286,12 +279,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/de_DE/LC_MESSAGES/django.mo index 30a48e4134..4baf083f76 100644 Binary files a/mayan/apps/django_gpg/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/de_DE/LC_MESSAGES/django.po index fbff8df6cd..0e9c57ec8a 100644 --- a/mayan/apps/django_gpg/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/de_DE/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Mathias Behrle , 2014 @@ -12,45 +12,46 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-05-20 21:54+0000\n" "Last-Translator: Tobias Paepke \n" -"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" +"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "Django GPG" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "Schlüssel-ID" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "Benutzer-ID" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "Typ" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "Erstellungsdatum" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "Ablaufdatum" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "Ohne Ablaufdatum" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "Länge" @@ -72,7 +73,9 @@ msgstr "Begriff" #: forms.py:48 msgid "Name, e-mail, key ID or key fingerprint to look for." -msgstr "Name, E-Mail, Schlüssel-ID oder Fingerabdruck des Schlüssels, der gesucht wird" +msgstr "" +"Name, E-Mail, Schlüssel-ID oder Fingerabdruck des Schlüssels, der gesucht " +"wird" #: links.py:13 msgid "Delete" @@ -99,7 +102,6 @@ msgid "Key management" msgstr "Schlüssel-Management" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "Schlüssel hochladen" @@ -145,7 +147,9 @@ msgstr "Signaturfehler" #: literals.py:53 msgid "Document is signed but no public key is available for verification." -msgstr "Das Dokument ist signiert, aber kein öffentlicher Schlüssel zur Überprüfung verfügbar." +msgstr "" +"Das Dokument ist signiert, aber kein öffentlicher Schlüssel zur Überprüfung " +"verfügbar." #: literals.py:58 msgid "Document is signed, and signature is good." @@ -164,7 +168,6 @@ msgid "Key data" msgstr "Schlüssel-Daten" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "Schlüssel" @@ -197,7 +200,6 @@ msgid "Use keys to sign content" msgstr "Schlüssel benutzen um Inhalt zu signieren" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "Schlüssel hochladen" @@ -206,7 +208,6 @@ msgid "View keys" msgstr "Schlüssel anzeigen" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "Unterschriften" @@ -219,13 +220,11 @@ msgid "Path to the GPG binary." msgstr "Pfad zum Programm GPG" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "Server, der nach unbekannten Schlüsseln durchsucht wird." #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "Schlüssel löschen: %s" @@ -236,7 +235,6 @@ msgstr "Details für Schlüssel %s" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "Schlüssel-ID %s importieren?" @@ -246,7 +244,6 @@ msgstr "Schlüssel importieren" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "Schlüssel-ID %(key_id)s konnte nicht importiert werden: %(error)s" @@ -290,12 +287,12 @@ msgstr "Neuen Schlüssel hochladen" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/en/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/en/LC_MESSAGES/django.mo index a5966431a4..4f6a0ebb85 100644 Binary files a/mayan/apps/django_gpg/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/en/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/en/LC_MESSAGES/django.po index f78132148e..ae5c619818 100644 --- a/mayan/apps/django_gpg/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2012-12-12 06:05+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,38 +18,38 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "Key ID" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 #, fuzzy msgid "Creation date" msgstr "creation date" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 #, fuzzy msgid "Expiration date" msgstr "expiration date" -#: apps.py:83 +#: apps.py:57 #, fuzzy msgid "No expiration" msgstr "expiration date" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 #, fuzzy msgid "Length" msgstr "length" diff --git a/mayan/apps/django_gpg/locale/es/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/es/LC_MESSAGES/django.mo index e67ba4fdd0..83a82dc472 100644 Binary files a/mayan/apps/django_gpg/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/es/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/es/LC_MESSAGES/django.po index 5affd12616..e761f830d2 100644 --- a/mayan/apps/django_gpg/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/es/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # jmcainzos , 2014 @@ -11,45 +11,46 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-05-09 01:46+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "Django GPG" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "Identificador de clave" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "ID de usuario" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "Tipo" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "Fecha de creación" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "Fecha de expiración" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "No expira" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "Largo" @@ -71,7 +72,9 @@ msgstr "Término" #: forms.py:48 msgid "Name, e-mail, key ID or key fingerprint to look for." -msgstr "Nombre, dirección de correo electrónico, identificador de clave o huella digital de clave a buscar." +msgstr "" +"Nombre, dirección de correo electrónico, identificador de clave o huella " +"digital de clave a buscar." #: links.py:13 msgid "Delete" @@ -98,7 +101,6 @@ msgid "Key management" msgstr "Gestión de claves" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "Subir llave" @@ -144,7 +146,9 @@ msgstr "Error de firma." #: literals.py:53 msgid "Document is signed but no public key is available for verification." -msgstr "El documento ha sido firmado pero no hay clave pública disponible para verificación." +msgstr "" +"El documento ha sido firmado pero no hay clave pública disponible para " +"verificación." #: literals.py:58 msgid "Document is signed, and signature is good." @@ -163,7 +167,6 @@ msgid "Key data" msgstr "Datos de llave" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "Llave" @@ -196,7 +199,6 @@ msgid "Use keys to sign content" msgstr "Usar llaves para firmar contenido" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "Subir llaves" @@ -205,26 +207,25 @@ msgid "View keys" msgstr "Ver claves" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "Firma" #: settings.py:15 msgid "Home directory used to store keys as well as configuration files." -msgstr "Directorio de inicio utilizado para almacenar las claves, así como los archivos de configuración." +msgstr "" +"Directorio de inicio utilizado para almacenar las claves, así como los " +"archivos de configuración." #: settings.py:21 msgid "Path to the GPG binary." msgstr "Ruta al binario GPG." #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "Servidor usado para buscar llaves." #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "Borrar llave: %s" @@ -235,7 +236,6 @@ msgstr "Detalles para llave: %s" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "¿Importar llave: %s?" @@ -245,7 +245,6 @@ msgstr "Importar clave" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "No se pudo importar la llave: %(key_id)s; %(error)s " @@ -289,12 +288,12 @@ msgstr "Subir una nueva llave" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/fa/LC_MESSAGES/django.mo index 7fc8f54dcb..a3aa7069d7 100644 Binary files a/mayan/apps/django_gpg/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/fa/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/fa/LC_MESSAGES/django.po index 42bb14f760..61a893187b 100644 --- a/mayan/apps/django_gpg/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/fa/LC_MESSAGES/django.po @@ -1,52 +1,53 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/" +"language/fa/)\n" +"Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "شناسه کلید" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "نوع" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "تاریخ ایجاد" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "تاریخ انقضا" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "طول" @@ -95,7 +96,6 @@ msgid "Key management" msgstr "مدیریت کلید" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -160,7 +160,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -193,7 +192,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -202,7 +200,6 @@ msgid "View keys" msgstr "دیدن کلیدها" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "امضاها" @@ -215,13 +212,11 @@ msgid "Path to the GPG binary." msgstr "محل کتایخانه باینری GPG" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -232,7 +227,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -242,7 +236,6 @@ msgstr "وارد کردن کلید" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -286,12 +279,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/fr/LC_MESSAGES/django.mo index f38174f28c..493a11b6f4 100644 Binary files a/mayan/apps/django_gpg/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/fr/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/fr/LC_MESSAGES/django.po index 801ff61f5b..cd5e5811e7 100644 --- a/mayan/apps/django_gpg/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/fr/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Bruno CAPELETO , 2016 @@ -11,45 +11,46 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-05-23 20:02+0000\n" "Last-Translator: Bruno CAPELETO \n" -"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" +"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/" +"fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "Django GPG" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "ID de la clé" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "Id Utilisateur" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "Type" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "Date de création" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "Date d'expiration" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "Pas d'expiration" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "Durée" @@ -98,7 +99,6 @@ msgid "Key management" msgstr "Gestion des clés" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "Uploader la clé" @@ -144,7 +144,9 @@ msgstr "Erreur de signature." #: literals.py:53 msgid "Document is signed but no public key is available for verification." -msgstr "Ce document est signé mais aucune clé publique n'est disponible pour vérifier la signature." +msgstr "" +"Ce document est signé mais aucune clé publique n'est disponible pour " +"vérifier la signature." #: literals.py:58 msgid "Document is signed, and signature is good." @@ -163,7 +165,6 @@ msgid "Key data" msgstr "Contenu de la clef" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "Clé" @@ -196,7 +197,6 @@ msgid "Use keys to sign content" msgstr "Utiliser des clefs pour signer le document" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "Uploader les clés" @@ -205,26 +205,25 @@ msgid "View keys" msgstr "Afficher les clés" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "Signatures" #: settings.py:15 msgid "Home directory used to store keys as well as configuration files." -msgstr "Répertoire principal utilisé pour stocker les clés, ainsi que les fichiers de configuration" +msgstr "" +"Répertoire principal utilisé pour stocker les clés, ainsi que les fichiers " +"de configuration" #: settings.py:21 msgid "Path to the GPG binary." msgstr "Chemin du binaire GPG" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "Serveur de clefs à contacter" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "Effacer la clé: %s" @@ -235,7 +234,6 @@ msgstr "Détails de la clé: %s" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "Importer l'identifiant de clé : %s ?" @@ -245,7 +243,6 @@ msgstr "Importer la clé" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "Impossible d'importer la clé : %(key_id)s; %(error)s" @@ -289,12 +286,12 @@ msgstr "Uploader une nouvelle clé" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/hu/LC_MESSAGES/django.mo index 62a8456e05..794e141f7f 100644 Binary files a/mayan/apps/django_gpg/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/hu/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/hu/LC_MESSAGES/django.po index 3c9bd2d917..35110a3c6e 100644 --- a/mayan/apps/django_gpg/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/hu/LC_MESSAGES/django.po @@ -1,52 +1,53 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" +"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/hu/)\n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "" @@ -95,7 +96,6 @@ msgid "Key management" msgstr "" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -160,7 +160,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -193,7 +192,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -202,7 +200,6 @@ msgid "View keys" msgstr "" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "" @@ -215,13 +212,11 @@ msgid "Path to the GPG binary." msgstr "" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -232,7 +227,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -242,7 +236,6 @@ msgstr "" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -286,12 +279,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/id/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/id/LC_MESSAGES/django.mo index 2d4027bc18..63e6cc92b5 100644 Binary files a/mayan/apps/django_gpg/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/id/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/id/LC_MESSAGES/django.po index c586ee243c..aeca45698b 100644 --- a/mayan/apps/django_gpg/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/id/LC_MESSAGES/django.po @@ -1,52 +1,53 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" +"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/" +"language/id/)\n" +"Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "" @@ -95,7 +96,6 @@ msgid "Key management" msgstr "" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -160,7 +160,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -193,7 +192,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -202,7 +200,6 @@ msgid "View keys" msgstr "" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "" @@ -215,13 +212,11 @@ msgid "Path to the GPG binary." msgstr "" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -232,7 +227,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -242,7 +236,6 @@ msgstr "" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -286,12 +279,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/it/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/it/LC_MESSAGES/django.mo index 9ad67ff2ed..156854f6fe 100644 Binary files a/mayan/apps/django_gpg/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/it/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/it/LC_MESSAGES/django.po index 895fcb7777..5efe68d08d 100644 --- a/mayan/apps/django_gpg/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/it/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Marco Camplese , 2016 @@ -10,45 +10,46 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-09-24 10:33+0000\n" "Last-Translator: Marco Camplese \n" -"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" +"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "Django GPG" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "chiave ID" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "User ID" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "Tipo" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "Data di creazione" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "Data scadenza" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "Nessuna scadenza" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "Lunghezza" @@ -97,7 +98,6 @@ msgid "Key management" msgstr "Gestione delle chiavi" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "Carica chiave" @@ -143,7 +143,9 @@ msgstr "Errore di firma" #: literals.py:53 msgid "Document is signed but no public key is available for verification." -msgstr "Il documento è stato firmato, ma la chiave pubblica non è disponibile per la verifica" +msgstr "" +"Il documento è stato firmato, ma la chiave pubblica non è disponibile per la " +"verifica" #: literals.py:58 msgid "Document is signed, and signature is good." @@ -162,7 +164,6 @@ msgid "Key data" msgstr "Dati chiave" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "Chiave" @@ -195,7 +196,6 @@ msgid "Use keys to sign content" msgstr "Usa la chiave per formare i contenuti" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "Carica chiavi" @@ -204,26 +204,25 @@ msgid "View keys" msgstr "Vista delle chiavi" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "Firme" #: settings.py:15 msgid "Home directory used to store keys as well as configuration files." -msgstr "Home directory utilizzata per memorizzare le chiavi così come i file di configurazione." +msgstr "" +"Home directory utilizzata per memorizzare le chiavi così come i file di " +"configurazione." #: settings.py:21 msgid "Path to the GPG binary." msgstr "Percorso per il programma GPG" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "Keyserver utilizzato per richiedere le chiavi." #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "Cancellare la chiave: %s" @@ -234,7 +233,6 @@ msgstr "Dettagli della chiave: %s." #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "Importare ID chiave: %s?" @@ -244,7 +242,6 @@ msgstr "Importa chiave" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "Impossibile importare la chiave: %(key_id)s; %(error)s" @@ -288,12 +285,12 @@ msgstr "Carica nuova chiave" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/nl_NL/LC_MESSAGES/django.mo index ed2c5476c6..6dc9405e3b 100644 Binary files a/mayan/apps/django_gpg/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/nl_NL/LC_MESSAGES/django.po index b82110c77d..ba71f21e79 100644 --- a/mayan/apps/django_gpg/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/nl_NL/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Evelijn Saaltink , 2016 @@ -9,45 +9,46 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-11-09 16:40+0000\n" "Last-Translator: Evelijn Saaltink \n" -"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-" +"edms/language/nl_NL/)\n" +"Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "Django GPG" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "Sleutel-ID" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "Gebruikers-ID" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "Type" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "Aanmaakdatum" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "Verloopdatu" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "Geen verloop" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "Lengte" @@ -96,7 +97,6 @@ msgid "Key management" msgstr "Sleutelbeheer" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "Upload sleutel" @@ -161,7 +161,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "Sleutel" @@ -194,7 +193,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -203,7 +201,6 @@ msgid "View keys" msgstr "Bekijk sleutels" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "Handtekeningen" @@ -216,13 +213,11 @@ msgid "Path to the GPG binary." msgstr "" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -233,7 +228,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -243,7 +237,6 @@ msgstr "Importeer sleutel" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -287,12 +280,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/pl/LC_MESSAGES/django.mo index 8ebc1319ea..d366f7b58e 100644 Binary files a/mayan/apps/django_gpg/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/pl/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/pl/LC_MESSAGES/django.po index 3103cad4c9..4803ec5aba 100644 --- a/mayan/apps/django_gpg/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/pl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Annunnaky , 2015 @@ -10,45 +10,47 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" +"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/" +"pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "Key ID" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "Typ" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "Data utworzenia" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "Data wygaśnięcia" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "Długość" @@ -97,7 +99,6 @@ msgid "Key management" msgstr "Zarządzanie kluczami" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -143,7 +144,9 @@ msgstr "Błąd podpisu." #: literals.py:53 msgid "Document is signed but no public key is available for verification." -msgstr "Dokument został podpisany, ale klucz publiczny nie jest dostępny do weryfikacji." +msgstr "" +"Dokument został podpisany, ale klucz publiczny nie jest dostępny do " +"weryfikacji." #: literals.py:58 msgid "Document is signed, and signature is good." @@ -162,7 +165,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -195,7 +197,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -204,26 +205,24 @@ msgid "View keys" msgstr "View keys" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "" #: settings.py:15 msgid "Home directory used to store keys as well as configuration files." -msgstr "Katalog domowy używany do przechowywania kluczy oraz plików konfiguracyjnych." +msgstr "" +"Katalog domowy używany do przechowywania kluczy oraz plików konfiguracyjnych." #: settings.py:21 msgid "Path to the GPG binary." msgstr "Ścieżka do GPG binary." #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -234,7 +233,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -244,7 +242,6 @@ msgstr "Importuj klucz" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -288,12 +285,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/pt/LC_MESSAGES/django.mo index 29851cc43c..91a72cf948 100644 Binary files a/mayan/apps/django_gpg/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/pt/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/pt/LC_MESSAGES/django.po index b65ad439e1..c2eb454551 100644 --- a/mayan/apps/django_gpg/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/pt/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Roberto Rosario, 2012 @@ -10,45 +10,46 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "ID da chave" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "" @@ -97,7 +98,6 @@ msgid "Key management" msgstr "Gestão de chaves" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -143,7 +143,9 @@ msgstr "Erro de assinatura." #: literals.py:53 msgid "Document is signed but no public key is available for verification." -msgstr "O documento está assinado, mas não está disponível uma chave pública para verificação." +msgstr "" +"O documento está assinado, mas não está disponível uma chave pública para " +"verificação." #: literals.py:58 msgid "Document is signed, and signature is good." @@ -162,7 +164,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -195,7 +196,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -204,7 +204,6 @@ msgid "View keys" msgstr "Ver as chaves" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "Assinaturas" @@ -217,13 +216,11 @@ msgid "Path to the GPG binary." msgstr "" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -234,7 +231,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -244,7 +240,6 @@ msgstr "Importar chave" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -288,12 +283,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/pt_BR/LC_MESSAGES/django.mo index 05c09456f1..807c5affa8 100644 Binary files a/mayan/apps/django_gpg/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/pt_BR/LC_MESSAGES/django.po index e3482eec1f..7f7e6b9f0c 100644 --- a/mayan/apps/django_gpg/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/pt_BR/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Aline Freitas , 2016 @@ -11,45 +11,46 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-11-17 23:07+0000\n" "Last-Translator: Aline Freitas \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-" +"edms/language/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "Django GPG" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "ID da chave" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "ID de usuário" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "Tipo" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "Data de criação" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "Data de expiração" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "Sem expiração" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "Largura" @@ -98,7 +99,6 @@ msgid "Key management" msgstr "Gerenciar chaves" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "Envio da chave" @@ -163,7 +163,6 @@ msgid "Key data" msgstr "Dados da chave" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "Chave" @@ -196,7 +195,6 @@ msgid "Use keys to sign content" msgstr "Usar chaves para assinar conteúdo" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "Enviar chaves" @@ -205,26 +203,25 @@ msgid "View keys" msgstr "Ver as chaves" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "Assinaturas" #: settings.py:15 msgid "Home directory used to store keys as well as configuration files." -msgstr "Diretório inicial usado para armazenar as chaves, assim como os arquivos de configuração." +msgstr "" +"Diretório inicial usado para armazenar as chaves, assim como os arquivos de " +"configuração." #: settings.py:21 msgid "Path to the GPG binary." msgstr "Caminho para o binário GPG." #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "Servidor usado para procurar chaves." #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "Apagar chave: %s" @@ -235,7 +232,6 @@ msgstr "Detalhes para chave: %s" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "Importar ID da chave: %s?" @@ -245,7 +241,6 @@ msgstr "Importar chave" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "Não foi possível importar chave: %(key_id)s; %(error)s" @@ -289,12 +284,12 @@ msgstr "Carregar nova chave" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/ro_RO/LC_MESSAGES/django.mo index 4c3443d54b..46f2157547 100644 Binary files a/mayan/apps/django_gpg/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/ro_RO/LC_MESSAGES/django.po index d05753ffc8..4b1d7347b8 100644 --- a/mayan/apps/django_gpg/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/ro_RO/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Badea Gabriel , 2013 @@ -9,45 +9,47 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-" +"edms/language/ro_RO/)\n" +"Language: ro_RO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ro_RO\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "ID cheie" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "Tip" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "" @@ -96,7 +98,6 @@ msgid "Key management" msgstr "gestionare chei" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -142,7 +143,9 @@ msgstr "Eroare semnătură." #: literals.py:53 msgid "Document is signed but no public key is available for verification." -msgstr "Documentul este semnat, dar nici o cheie publică nu este disponibilă pentru verificare." +msgstr "" +"Documentul este semnat, dar nici o cheie publică nu este disponibilă pentru " +"verificare." #: literals.py:58 msgid "Document is signed, and signature is good." @@ -161,7 +164,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -194,7 +196,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -203,26 +204,25 @@ msgid "View keys" msgstr "Vizualiza cheile" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "" #: settings.py:15 msgid "Home directory used to store keys as well as configuration files." -msgstr "Cale director utilizată pentru a stoca cheile, precum și fișiere de configurare." +msgstr "" +"Cale director utilizată pentru a stoca cheile, precum și fișiere de " +"configurare." #: settings.py:21 msgid "Path to the GPG binary." msgstr "" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -233,7 +233,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -243,7 +242,6 @@ msgstr "Import cheie" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -287,12 +285,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/ru/LC_MESSAGES/django.mo index bb93c5c08b..eb306efeb6 100644 Binary files a/mayan/apps/django_gpg/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/ru/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/ru/LC_MESSAGES/django.po index 6a3dccca02..d3bb86edf8 100644 --- a/mayan/apps/django_gpg/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/ru/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # lilo.panic, 2016 @@ -9,45 +9,48 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-07-19 20:20+0000\n" "Last-Translator: lilo.panic\n" -"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "Django GPG" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "ID ключа" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "Идентификатор пользователя" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "Тип" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "Дата создания" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "Дата окончания" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "Не устаревает" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "Длина" @@ -96,7 +99,6 @@ msgid "Key management" msgstr "Управление ключами" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "Загрузить ключ" @@ -161,7 +163,6 @@ msgid "Key data" msgstr "Содержимое ключа" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "Ключ" @@ -194,7 +195,6 @@ msgid "Use keys to sign content" msgstr "Использовать ключи для подписи контента" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "Загрузить ключи" @@ -203,26 +203,25 @@ msgid "View keys" msgstr "Просмотр ключей" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "Подписи" #: settings.py:15 msgid "Home directory used to store keys as well as configuration files." -msgstr "Домашний каталог, используемый для хранения ключей, а также файлов конфигурации." +msgstr "" +"Домашний каталог, используемый для хранения ключей, а также файлов " +"конфигурации." #: settings.py:21 msgid "Path to the GPG binary." msgstr "Путь к GPG исходникам." #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "Сервер ключей используемый для запроса ключей." #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "Удалить ключ: %s" @@ -233,7 +232,6 @@ msgstr "Подробности для ключа: %s" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "Получить ключ ID: %s?" @@ -243,7 +241,6 @@ msgstr "Получить ключ" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "Невозможно импортировать ключ %(key_id)s; %(error)s" @@ -287,12 +284,12 @@ msgstr "Загрузить новый ключ" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/sl_SI/LC_MESSAGES/django.mo index b95d50b1db..d7a3e036cd 100644 Binary files a/mayan/apps/django_gpg/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/sl_SI/LC_MESSAGES/django.po index e4137c2a43..c3907356c4 100644 --- a/mayan/apps/django_gpg/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/sl_SI/LC_MESSAGES/django.po @@ -1,52 +1,54 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-" +"edms/language/sl_SI/)\n" +"Language: sl_SI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: sl_SI\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "" @@ -95,7 +97,6 @@ msgid "Key management" msgstr "" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -160,7 +161,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -193,7 +193,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -202,7 +201,6 @@ msgid "View keys" msgstr "" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "" @@ -215,13 +213,11 @@ msgid "Path to the GPG binary." msgstr "" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -232,7 +228,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -242,7 +237,6 @@ msgstr "" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -286,12 +280,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/vi_VN/LC_MESSAGES/django.mo index 98e29e896c..6da2918189 100644 Binary files a/mayan/apps/django_gpg/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/vi_VN/LC_MESSAGES/django.po index 3a37ebc8ec..8986db56d7 100644 --- a/mayan/apps/django_gpg/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/vi_VN/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Trung Phan Minh , 2013 @@ -9,45 +9,46 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/" +"mayan-edms/language/vi_VN/)\n" +"Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "Key ID" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "" @@ -96,7 +97,6 @@ msgid "Key management" msgstr "Quản lý khóa" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -161,7 +161,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -194,7 +193,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -203,7 +201,6 @@ msgid "View keys" msgstr "Xem các khóa" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "" @@ -216,13 +213,11 @@ msgid "Path to the GPG binary." msgstr "" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -233,7 +228,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -243,7 +237,6 @@ msgstr "Import key" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -287,12 +280,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/django_gpg/locale/zh_CN/LC_MESSAGES/django.mo index fb3f37df1c..258b0e6d13 100644 Binary files a/mayan/apps/django_gpg/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/django_gpg/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/django_gpg/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/django_gpg/locale/zh_CN/LC_MESSAGES/django.po index c163015017..4aae7c0c5f 100644 --- a/mayan/apps/django_gpg/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/django_gpg/locale/zh_CN/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Ford Guo , 2014 @@ -9,45 +9,46 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:22+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" +"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/" +"language/zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:30 +#: apps.py:31 msgid "Django GPG" msgstr "" -#: apps.py:73 apps.py:76 forms.py:17 +#: apps.py:47 apps.py:50 forms.py:17 msgid "Key ID" msgstr "密钥ID" -#: apps.py:74 apps.py:87 forms.py:19 models.py:47 +#: apps.py:48 apps.py:61 forms.py:19 models.py:47 msgid "User ID" msgstr "" -#: apps.py:77 forms.py:34 models.py:50 +#: apps.py:51 forms.py:34 models.py:50 msgid "Type" msgstr "" -#: apps.py:79 forms.py:23 models.py:31 +#: apps.py:53 forms.py:23 models.py:31 msgid "Creation date" msgstr "" -#: apps.py:82 forms.py:27 models.py:35 +#: apps.py:56 forms.py:27 models.py:35 msgid "Expiration date" msgstr "" -#: apps.py:83 +#: apps.py:57 msgid "No expiration" msgstr "" -#: apps.py:85 forms.py:32 models.py:42 +#: apps.py:59 forms.py:32 models.py:42 msgid "Length" msgstr "" @@ -96,7 +97,6 @@ msgid "Key management" msgstr "密钥管理" #: links.py:37 -#| msgid "Import key" msgid "Upload key" msgstr "" @@ -161,7 +161,6 @@ msgid "Key data" msgstr "" #: models.py:56 -#| msgid "Key ID" msgid "Key" msgstr "" @@ -194,7 +193,6 @@ msgid "Use keys to sign content" msgstr "" #: permissions.py:22 -#| msgid "public keys" msgid "Upload keys" msgstr "" @@ -203,7 +201,6 @@ msgid "View keys" msgstr "查看密钥" #: settings.py:10 -#| msgid "Signature error." msgid "Signatures" msgstr "" @@ -216,13 +213,11 @@ msgid "Path to the GPG binary." msgstr "" #: settings.py:25 -#| msgid "List of keyservers to be queried for unknown keys." msgid "Keyserver used to query for keys." msgstr "" #: views.py:38 #, python-format -#| msgid "Delete keys" msgid "Delete key: %s" msgstr "" @@ -233,7 +228,6 @@ msgstr "" #: views.py:68 #, python-format -#| msgid "Import key" msgid "Import key ID: %s?" msgstr "" @@ -243,7 +237,6 @@ msgstr "导入密钥" #: views.py:78 #, python-format -#| msgid "Unable to import key id: %(key_id)s; %(error)s" msgid "Unable to import key: %(key_id)s; %(error)s" msgstr "" @@ -287,12 +280,12 @@ msgstr "" #~ msgstr "Delete key" #~ msgid "" -#~ "Delete key %s? If you delete a public key that is part of a public/private " -#~ "pair the private key will be deleted as well." +#~ "Delete key %s? If you delete a public key that is part of a public/" +#~ "private pair the private key will be deleted as well." #~ msgstr "" -#~ "Are you sure you wish to delete key: %s? If you try to delete a public key " -#~ "that is part of a public/private pair the private key will be deleted as " -#~ "well." +#~ "Are you sure you wish to delete key: %s? If you try to delete a public " +#~ "key that is part of a public/private pair the private key will be deleted " +#~ "as well." #~ msgid "results" #~ msgstr "results" diff --git a/mayan/apps/django_gpg/models.py b/mayan/apps/django_gpg/models.py index feccaecc75..ebffe2c084 100644 --- a/mayan/apps/django_gpg/models.py +++ b/mayan/apps/django_gpg/models.py @@ -23,6 +23,11 @@ logger = logging.getLogger(__name__) @python_2_unicode_compatible class Key(models.Model): + """ + Fields: + * key_type - Will show private or public, the only two types of keys in + a public key infrastructure, the kind used in Mayan. + """ key_data = models.TextField( help_text=_('ASCII armored version of the key.'), verbose_name=_('Key data') diff --git a/mayan/apps/django_gpg/serializers.py b/mayan/apps/django_gpg/serializers.py new file mode 100644 index 0000000000..df3c965690 --- /dev/null +++ b/mayan/apps/django_gpg/serializers.py @@ -0,0 +1,17 @@ +from __future__ import unicode_literals + +from rest_framework import serializers + +from .models import Key + + +class KeySerializer(serializers.ModelSerializer): + class Meta: + extra_kwargs = { + 'url': {'view_name': 'rest_api:key-detail'}, + } + fields = ( + 'algorithm', 'creation_date', 'expiration_date', 'fingerprint', + 'id', 'key_data', 'key_type', 'length', 'url', 'user_id' + ) + model = Key diff --git a/mayan/apps/django_gpg/tests/test_api.py b/mayan/apps/django_gpg/tests/test_api.py new file mode 100644 index 0000000000..605f973911 --- /dev/null +++ b/mayan/apps/django_gpg/tests/test_api.py @@ -0,0 +1,59 @@ +from __future__ import unicode_literals + +from django.contrib.auth import get_user_model +from django.core.urlresolvers import reverse +from django.test import override_settings + +from rest_api.tests import BaseAPITestCase +from user_management.tests.literals import ( + TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME +) + +from ..models import Key + +from .literals import TEST_KEY_DATA, TEST_KEY_FINGERPRINT + + +@override_settings(OCR_AUTO_OCR=False) +class KeyAPITestCase(BaseAPITestCase): + def setUp(self): + super(KeyAPITestCase, self).setUp() + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + def _create_key(self): + return Key.objects.create(key_data=TEST_KEY_DATA) + + def test_key_create_view(self): + response = self.client.post( + reverse('rest_api:key-list'), { + 'key_data': TEST_KEY_DATA + } + ) + self.assertEqual(response.data['fingerprint'], TEST_KEY_FINGERPRINT) + + key = Key.objects.first() + self.assertEqual(Key.objects.count(), 1) + self.assertEqual(key.fingerprint, TEST_KEY_FINGERPRINT) + + def test_key_delete_view(self): + key = self._create_key() + + self.client.delete(reverse('rest_api:key-detail', args=(key.pk,))) + + self.assertEqual(Key.objects.count(), 0) + + def test_key_detail_view(self): + key = self._create_key() + + response = self.client.get( + reverse('rest_api:key-detail', args=(key.pk,)) + ) + + self.assertEqual(response.data['fingerprint'], key.fingerprint) diff --git a/mayan/apps/django_gpg/urls.py b/mayan/apps/django_gpg/urls.py index eaaf3fa762..ac21c86d2d 100644 --- a/mayan/apps/django_gpg/urls.py +++ b/mayan/apps/django_gpg/urls.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from django.conf.urls import url +from .api_views import APIKeyListView, APIKeyView from .views import ( KeyDeleteView, KeyDetailView, KeyDownloadView, KeyQueryView, KeyQueryResultView, KeyReceive, KeyUploadView, PrivateKeyListView, @@ -38,3 +39,11 @@ urlpatterns = [ r'^receive/(?P.+)/$', KeyReceive.as_view(), name='key_receive' ), ] + +api_urls = [ + url( + r'^keys/(?P[0-9]+)/$', APIKeyView.as_view(), + name='key-detail' + ), + url(r'^keys/$', APIKeyListView.as_view(), name='key-list'), +] diff --git a/mayan/apps/document_comments/api_views.py b/mayan/apps/document_comments/api_views.py new file mode 100644 index 0000000000..2ce872e2db --- /dev/null +++ b/mayan/apps/document_comments/api_views.py @@ -0,0 +1,120 @@ +from __future__ import absolute_import, unicode_literals + +from django.core.exceptions import PermissionDenied +from django.shortcuts import get_object_or_404 + +from rest_framework import generics + +from acls.models import AccessControlList +from documents.models import Document +from permissions import Permission + +from .permissions import ( + permission_comment_create, permission_comment_delete, + permission_comment_view +) +from .serializers import CommentSerializer, WritableCommentSerializer + + +class APICommentListView(generics.ListCreateAPIView): + def get(self, *args, **kwargs): + """ + Returns a list of all the document comments. + """ + return super(APICommentListView, self).get(*args, **kwargs) + + def get_document(self): + if self.request.method == 'GET': + permission_required = permission_comment_view + else: + permission_required = permission_comment_create + + document = get_object_or_404(Document, pk=self.kwargs['document_pk']) + + try: + Permission.check_permissions( + self.request.user, (permission_required,) + ) + except PermissionDenied: + AccessControlList.objects.check_access( + permission_required, self.request.user, document + ) + + return document + + def get_queryset(self): + return self.get_document().comments.all() + + def get_serializer_class(self): + if self.request.method == 'GET': + return CommentSerializer + else: + return WritableCommentSerializer + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'document': self.get_document(), + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } + + def post(self, *args, **kwargs): + """ + Create a new document comment. + """ + return super(APICommentListView, self).post(*args, **kwargs) + + +class APICommentView(generics.RetrieveDestroyAPIView): + lookup_url_kwarg = 'comment_pk' + serializer_class = CommentSerializer + + def delete(self, request, *args, **kwargs): + """ + Delete the selected document comment. + """ + + return super(APICommentView, self).delete(request, *args, **kwargs) + + def get(self, *args, **kwargs): + """ + Returns the details of the selected document comment. + """ + + return super(APICommentView, self).get(*args, **kwargs) + + def get_document(self): + if self.request.method == 'GET': + permission_required = permission_comment_view + else: + permission_required = permission_comment_delete + + document = get_object_or_404(Document, pk=self.kwargs['document_pk']) + + try: + Permission.check_permissions( + self.request.user, (permission_required,) + ) + except PermissionDenied: + AccessControlList.objects.check_access( + permission_required, self.request.user, document + ) + + return document + + def get_queryset(self): + return self.get_document().comments.all() + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } diff --git a/mayan/apps/document_comments/apps.py b/mayan/apps/document_comments/apps.py index c4d5f3dfd4..d79f3bd7b3 100644 --- a/mayan/apps/document_comments/apps.py +++ b/mayan/apps/document_comments/apps.py @@ -5,7 +5,9 @@ from django.utils.translation import ugettext_lazy as _ from acls import ModelPermission from common import MayanAppConfig, menu_facet, menu_object, menu_sidebar +from documents.search import document_page_search, document_search from navigation import SourceColumn +from rest_api.classes import APIEndPoint from .links import ( link_comment_add, link_comment_delete, link_comments_for_document @@ -19,12 +21,15 @@ from .permissions import ( class DocumentCommentsApp(MayanAppConfig): app_namespace = 'comments' app_url = 'comments' + has_tests = True name = 'document_comments' verbose_name = _('Document comments') def ready(self): super(DocumentCommentsApp, self).ready() + APIEndPoint(app=self, version_string='1') + Document = apps.get_model( app_label='documents', model_name='Document' ) @@ -45,6 +50,15 @@ class DocumentCommentsApp(MayanAppConfig): ) SourceColumn(source=Comment, label=_('Comment'), attribute='comment') + document_page_search.add_model_field( + field='document_version__document__comments__comment', + label=_('Comments') + ) + document_search.add_model_field( + field='comments__comment', + label=_('Comments') + ) + menu_sidebar.bind_links( links=(link_comment_add,), sources=( diff --git a/mayan/apps/document_comments/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/ar/LC_MESSAGES/django.mo index b0a550b935..d91b52755d 100644 Binary files a/mayan/apps/document_comments/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/ar/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/ar/LC_MESSAGES/django.po index d250379d6b..ba9e57d7f2 100644 --- a/mayan/apps/document_comments/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/ar/LC_MESSAGES/django.po @@ -1,48 +1,51 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/" +"ar/)\n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Date" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "مستخدم" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "تعليق" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "التعليقات" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "" @@ -54,10 +57,6 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "التعليقات" - #: models.py:23 msgid "Document" msgstr "" @@ -78,18 +77,17 @@ msgstr "حذف التعليقات" msgid "View comments" msgstr "عرض التعليقات" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "إضافة تعليق على الوثيقة: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "" diff --git a/mayan/apps/document_comments/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/bg/LC_MESSAGES/django.mo index 6401841138..2a87296e2d 100644 Binary files a/mayan/apps/document_comments/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/bg/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/bg/LC_MESSAGES/django.po index b4568c327e..ac28fb7f2d 100644 --- a/mayan/apps/document_comments/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/bg/LC_MESSAGES/django.po @@ -1,48 +1,50 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" +"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Дата" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Потребител" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Коментар" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Коментари" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "" @@ -54,10 +56,6 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Коментари" - #: models.py:23 msgid "Document" msgstr "" @@ -78,18 +76,17 @@ msgstr "Изтриване на коментари" msgid "View comments" msgstr "Преглед на коментари" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Добавяне на коментар към документ: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "" diff --git a/mayan/apps/document_comments/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/bs_BA/LC_MESSAGES/django.mo index f0fbd24ea1..df52d905a0 100644 Binary files a/mayan/apps/document_comments/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/bs_BA/LC_MESSAGES/django.po index b6db8b2ba5..65b588ff35 100644 --- a/mayan/apps/document_comments/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/bs_BA/LC_MESSAGES/django.po @@ -1,48 +1,51 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" +"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/" +"rosarior/mayan-edms/language/bs_BA/)\n" +"Language: bs_BA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bs_BA\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" +"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" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Datum" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Korisnik" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Komentar" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Komentari" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "" @@ -54,10 +57,6 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Komentari" - #: models.py:23 msgid "Document" msgstr "" @@ -78,18 +77,17 @@ msgstr "Obriši komentare" msgid "View comments" msgstr "Pregledaj komentare" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Dodaj komentar za dokument: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "" diff --git a/mayan/apps/document_comments/locale/da/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/da/LC_MESSAGES/django.mo index 578fd9045b..45a79edab0 100644 Binary files a/mayan/apps/document_comments/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/da/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/da/LC_MESSAGES/django.po index d30bef8e52..1ae1cfd209 100644 --- a/mayan/apps/document_comments/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/da/LC_MESSAGES/django.po @@ -1,48 +1,50 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" +"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/" +"da/)\n" +"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Dato" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Bruger" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Kommentar" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Kommentarer" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "" @@ -54,10 +56,6 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Kommentarer" - #: models.py:23 msgid "Document" msgstr "" @@ -78,18 +76,17 @@ msgstr "Slet kommentarer" msgid "View comments" msgstr "Se kommentarer" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Tilføj kommentar til dokument: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "" diff --git a/mayan/apps/document_comments/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/de_DE/LC_MESSAGES/django.mo index 85da4060f8..ecff9d6985 100644 Binary files a/mayan/apps/document_comments/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/de_DE/LC_MESSAGES/django.po index ea34ed74c7..df5562e516 100644 --- a/mayan/apps/document_comments/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/de_DE/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Berny , 2015 @@ -9,41 +9,43 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Mathias Behrle \n" -"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" +"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "Kommentare" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Datum" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Benutzer" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Kommentar" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Kommentare" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "Kommentar erstellt" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "Kommentar gelöscht" @@ -55,10 +57,6 @@ msgstr "Kommentar hinzufügen" msgid "Delete" msgstr "Löschen" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Kommentare" - #: models.py:23 msgid "Document" msgstr "Dokument" @@ -79,18 +77,17 @@ msgstr "Kommentare löschen" msgid "View comments" msgstr "Kommentare ansehen" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Kommentar zu Dokument %s hinzufügen" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "Kommentar %s löschen?" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "Kommentare für Dokument: %s" diff --git a/mayan/apps/document_comments/locale/en/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/en/LC_MESSAGES/django.mo index e8cf79ce35..2d27662eb4 100644 Binary files a/mayan/apps/document_comments/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/en/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/en/LC_MESSAGES/django.po index 0add17e181..2bda5a30b1 100644 --- a/mayan/apps/document_comments/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2013-11-20 11:56+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,26 +18,30 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:23 +#: apps.py:26 #, fuzzy #| msgid "Delete comments" msgid "Document comments" msgstr "Delete comments" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 #, fuzzy msgid "Comment" msgstr "Comments" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Comments" + #: events.py:9 #, fuzzy #| msgid "Delete comments" @@ -60,10 +64,6 @@ msgstr "add comment" msgid "Delete" msgstr "delete" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Comments" - #: models.py:23 #, fuzzy msgid "Document" @@ -85,18 +85,18 @@ msgstr "Delete comments" msgid "View comments" msgstr "View comments" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Add comment to document: %s" -#: views.py:90 +#: views.py:79 #, fuzzy, python-format #| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "Delete comments" -#: views.py:122 +#: views.py:106 #, fuzzy, python-format msgid "Comments for document: %s" msgstr "Add comment to document: %s" diff --git a/mayan/apps/document_comments/locale/es/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/es/LC_MESSAGES/django.mo index 37abc63a33..a052241de3 100644 Binary files a/mayan/apps/document_comments/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/es/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/es/LC_MESSAGES/django.po index 3fb8867504..edf3a0f070 100644 --- a/mayan/apps/document_comments/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/es/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Roberto Rosario, 2015 @@ -9,41 +9,43 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "Comentarios de documento" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Fecha" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Usuario" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Comentario" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Comentarios" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "Comentario de documento creado" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "Comentario de documento borrado" @@ -55,10 +57,6 @@ msgstr "Añadir comentario" msgid "Delete" msgstr "Borrar" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Comentarios" - #: models.py:23 msgid "Document" msgstr "Documento" @@ -79,18 +77,17 @@ msgstr "Eliminar comentarios" msgid "View comments" msgstr "Ver comentarios" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Añadir comentario al documento: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "¿Borrar comentario: %s?" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "Comentarios para el documento: %s" diff --git a/mayan/apps/document_comments/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/fa/LC_MESSAGES/django.mo index 08241c2548..8eb04c0f3c 100644 Binary files a/mayan/apps/document_comments/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/fa/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/fa/LC_MESSAGES/django.po index a5777a047c..fc96cb7a96 100644 --- a/mayan/apps/document_comments/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/fa/LC_MESSAGES/django.po @@ -1,48 +1,50 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/" +"language/fa/)\n" +"Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "تاریخ" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "کاربر" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "شرح" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "توضیحات" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "" @@ -54,10 +56,6 @@ msgstr "اضافه کردن توضیحات" msgid "Delete" msgstr "حذف" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "توضیحات" - #: models.py:23 msgid "Document" msgstr "سند" @@ -78,18 +76,17 @@ msgstr "حذف توضیحات" msgid "View comments" msgstr "بازبینی توضیحات" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "اضافه کردن توضیحات به سند: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "توضیحات سند %s" diff --git a/mayan/apps/document_comments/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/fr/LC_MESSAGES/django.mo index d741a32707..817c5c29e2 100644 Binary files a/mayan/apps/document_comments/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/fr/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/fr/LC_MESSAGES/django.po index 08e93aff2c..aa6febd84d 100644 --- a/mayan/apps/document_comments/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/fr/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Thierry Schott , 2016 @@ -9,41 +9,43 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Thierry Schott \n" -"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" +"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/" +"fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "Commentaires du document" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Date" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Utilisateur" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Commentaire" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Commentaires" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "Commentaire de document créé" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "Commentaire de document supprimé" @@ -55,10 +57,6 @@ msgstr "Ajouter un commentaire" msgid "Delete" msgstr "Suppression" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Commentaires" - #: models.py:23 msgid "Document" msgstr "Document" @@ -79,18 +77,17 @@ msgstr "Supprimer des commentaires" msgid "View comments" msgstr "Afficher les commentaires" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Ajouter un commentaire au document : %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "Supprimer le commentaire : %s ?" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "Commentaires pour le document : %s" diff --git a/mayan/apps/document_comments/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/hu/LC_MESSAGES/django.mo index c7ea56a6c9..b9bd3626cd 100644 Binary files a/mayan/apps/document_comments/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/hu/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/hu/LC_MESSAGES/django.po index 4301236550..ca42d2e866 100644 --- a/mayan/apps/document_comments/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/hu/LC_MESSAGES/django.po @@ -1,48 +1,50 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" +"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/hu/)\n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Felhasználó" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Megjegyzés" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Megjegyzések" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "" @@ -54,10 +56,6 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Megjegyzések" - #: models.py:23 msgid "Document" msgstr "" @@ -78,18 +76,17 @@ msgstr "hozzászólás törlése" msgid "View comments" msgstr "hozzászólás megtekintése" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Megjegyzés fűzése a %s dokumentumhoz." -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "" diff --git a/mayan/apps/document_comments/locale/id/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/id/LC_MESSAGES/django.mo index 55189323d8..829aaa0874 100644 Binary files a/mayan/apps/document_comments/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/id/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/id/LC_MESSAGES/django.po index 6f563c7f4a..cb551e73e5 100644 --- a/mayan/apps/document_comments/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/id/LC_MESSAGES/django.po @@ -1,48 +1,50 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" +"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/" +"language/id/)\n" +"Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Pengguna" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Komentar" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Komentar-komentar" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "" @@ -54,10 +56,6 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Komentar-komentar" - #: models.py:23 msgid "Document" msgstr "" @@ -78,18 +76,17 @@ msgstr "Hapus komentar-komentar" msgid "View comments" msgstr "Lihat komentar-komentar" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Menambah komentar ke dokumen: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "" diff --git a/mayan/apps/document_comments/locale/it/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/it/LC_MESSAGES/django.mo index f14546d0d4..a15d50a025 100644 Binary files a/mayan/apps/document_comments/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/it/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/it/LC_MESSAGES/django.po index f9bc51023d..f113c8cf6f 100644 --- a/mayan/apps/document_comments/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/it/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Marco Camplese , 2016 @@ -9,41 +9,43 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-09-24 09:51+0000\n" "Last-Translator: Marco Camplese \n" -"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" +"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "Commenti documento" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Data" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Utente" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Commento" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Commenti " + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "Commento documento creato" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "Commento documento cancellato" @@ -55,10 +57,6 @@ msgstr "Aggiungi commento" msgid "Delete" msgstr "Cancella" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Commenti " - #: models.py:23 msgid "Document" msgstr "Documento" @@ -79,18 +77,17 @@ msgstr "Cancella commenti" msgid "View comments" msgstr "Visualizza commenti" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Aggiungi un comento al documento: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "Cancellare il commento: %s?" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "Commenti al documento: %s" diff --git a/mayan/apps/document_comments/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/nl_NL/LC_MESSAGES/django.mo index a9d56e03ed..cfca1c1d72 100644 Binary files a/mayan/apps/document_comments/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/nl_NL/LC_MESSAGES/django.po index 8faa889e6c..bfbdf62024 100644 --- a/mayan/apps/document_comments/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/nl_NL/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Evelijn Saaltink , 2016 @@ -9,41 +9,43 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 12:44+0000\n" "Last-Translator: Evelijn Saaltink \n" -"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-" +"edms/language/nl_NL/)\n" +"Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "Documentopmerkingen" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Datum" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Gebruiker" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Commentaar" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Commentaar" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "" @@ -55,10 +57,6 @@ msgstr "Voeg opmerking toe" msgid "Delete" msgstr "Verwijder" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Commentaar" - #: models.py:23 msgid "Document" msgstr "Document" @@ -79,18 +77,17 @@ msgstr "Verwijderen van commentaar" msgid "View comments" msgstr "Bekijk commentaar" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Opmerking toevoegen aan document: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "Verwijder opmerking: %s?" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "Opmerkingen voor document: %s" diff --git a/mayan/apps/document_comments/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/pl/LC_MESSAGES/django.mo index 8b127d81dd..55912c647d 100644 Binary files a/mayan/apps/document_comments/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/pl/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/pl/LC_MESSAGES/django.po index 31961be65a..a453bb5a19 100644 --- a/mayan/apps/document_comments/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/pl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Wojtek Warczakowski , 2016 @@ -9,41 +9,44 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Wojtek Warczakowski \n" -"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" +"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/" +"pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "Komentarze dokumentu" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Data" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Użytkownik" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Komentarz" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Komentarze" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "Dokument został skomentowany" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "Komentarz do dokumentu został usunięty" @@ -55,10 +58,6 @@ msgstr "Dodaj komentarz" msgid "Delete" msgstr "Usuń" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Komentarze" - #: models.py:23 msgid "Document" msgstr "Dokument" @@ -79,18 +78,17 @@ msgstr "Usuwaj komentarze" msgid "View comments" msgstr "Przeglądaj komentarze" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Dodanie komentarza do dokumentu: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "Usunąć komentarz: %s?" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "Komentarze do dokumentu: %s" diff --git a/mayan/apps/document_comments/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/pt/LC_MESSAGES/django.mo index e641521186..833e9b11f1 100644 Binary files a/mayan/apps/document_comments/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/pt/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/pt/LC_MESSAGES/django.po index 71167c7c84..52315cfeef 100644 --- a/mayan/apps/document_comments/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/pt/LC_MESSAGES/django.po @@ -1,48 +1,50 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Data" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Utilizador" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Comentário" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Comentários" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "" @@ -54,10 +56,6 @@ msgstr "" msgid "Delete" msgstr "Eliminar" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Comentários" - #: models.py:23 msgid "Document" msgstr "" @@ -78,18 +76,17 @@ msgstr "Excluir comentários" msgid "View comments" msgstr "Ver comentários" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Adicionar comentário ao documento: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "" diff --git a/mayan/apps/document_comments/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/pt_BR/LC_MESSAGES/django.mo index f5d30f8963..a889890101 100644 Binary files a/mayan/apps/document_comments/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/pt_BR/LC_MESSAGES/django.po index 23ae98d96a..27fd32433e 100644 --- a/mayan/apps/document_comments/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/pt_BR/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Aline Freitas , 2016 @@ -9,41 +9,43 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-11-17 22:54+0000\n" "Last-Translator: Aline Freitas \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-" +"edms/language/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "Comentários de documento" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Data" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Usuário" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Comentário" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Comentários" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "Comentário de documento criado" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "Comentário de documento apagado" @@ -55,10 +57,6 @@ msgstr "Adicionar comentário" msgid "Delete" msgstr "Excluir" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Comentários" - #: models.py:23 msgid "Document" msgstr "Documento" @@ -79,18 +77,17 @@ msgstr "Excluir comentários" msgid "View comments" msgstr "Ver comentários" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Adicionar comentário ao documento: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "Apagar comentário: %s?" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "Comentário para documento: %s" diff --git a/mayan/apps/document_comments/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/ro_RO/LC_MESSAGES/django.mo index b00cd1e8b8..732228d253 100644 Binary files a/mayan/apps/document_comments/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/ro_RO/LC_MESSAGES/django.po index 56513d1ea0..d59baf0f86 100644 --- a/mayan/apps/document_comments/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/ro_RO/LC_MESSAGES/django.po @@ -1,48 +1,51 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-17 09:39+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-" +"edms/language/ro_RO/)\n" +"Language: ro_RO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ro_RO\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Data" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "utilizator" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Comentariu" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Comentarii" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "" @@ -54,10 +57,6 @@ msgstr "" msgid "Delete" msgstr "Șterge" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Comentarii" - #: models.py:23 msgid "Document" msgstr "" @@ -78,18 +77,17 @@ msgstr "Ștergeți comentarii" msgid "View comments" msgstr "Vezi comentariile" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Adaugă comentariu la document:% s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "" diff --git a/mayan/apps/document_comments/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/ru/LC_MESSAGES/django.mo index b771173907..bbbbe8a7f3 100644 Binary files a/mayan/apps/document_comments/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/ru/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/ru/LC_MESSAGES/django.po index 383a39376d..f74b98244b 100644 --- a/mayan/apps/document_comments/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/ru/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # lilo.panic, 2016 @@ -9,41 +9,45 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-07-14 01:35+0000\n" "Last-Translator: lilo.panic\n" -"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "Комментарии документа" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Дата" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Пользователь" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Комментарий" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Комментарии" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "Комментарий документа создан" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "Комментарий документа удалён" @@ -55,10 +59,6 @@ msgstr "Добавить комментарий" msgid "Delete" msgstr "Удалить" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Комментарии" - #: models.py:23 msgid "Document" msgstr "Документ" @@ -79,18 +79,17 @@ msgstr "Удалить комментарии" msgid "View comments" msgstr "Просмотр комментариев" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Добавить комментарий на документ: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "Удалить комментарий: %s?" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "Комментарии для документа: %s" diff --git a/mayan/apps/document_comments/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/sl_SI/LC_MESSAGES/django.mo index 32a7002e5b..24194339b4 100644 Binary files a/mayan/apps/document_comments/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/sl_SI/LC_MESSAGES/django.po index 9f8c03b55d..7aba9abe9e 100644 --- a/mayan/apps/document_comments/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-23 16:43+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,24 +18,28 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:23 +#: apps.py:26 #| msgid "Delete comments" msgid "Document comments" msgstr "" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Komentar" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Komentarji" + #: events.py:9 #| msgid "Delete comments" msgid "Document comment created" @@ -54,13 +58,9 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Komentarji" - #: models.py:23 msgid "Document" -msgstr "" +msgstr "Dokument" #: models.py:33 msgid "Date time submitted" @@ -78,18 +78,18 @@ msgstr "Izbriši komentarje" msgid "View comments" msgstr "Poglej komentarje" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Dodaj komentar datotekei: %s" -#: views.py:90 +#: views.py:79 #, python-format #| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "" diff --git a/mayan/apps/document_comments/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/vi_VN/LC_MESSAGES/django.mo index 8d4550d6de..bedac7142d 100644 Binary files a/mayan/apps/document_comments/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/vi_VN/LC_MESSAGES/django.po index 79b52a7022..2f20dc465c 100644 --- a/mayan/apps/document_comments/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/vi_VN/LC_MESSAGES/django.po @@ -1,48 +1,50 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/" +"mayan-edms/language/vi_VN/)\n" +"Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "Ngày" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "Người dùng" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "Chú thích" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "Chú thích" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "" @@ -54,10 +56,6 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "Chú thích" - #: models.py:23 msgid "Document" msgstr "" @@ -78,18 +76,17 @@ msgstr "Xóa chú thích" msgid "View comments" msgstr "Xem chú thích" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "Thêm chú thích cho tài liệu: %s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "" diff --git a/mayan/apps/document_comments/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/document_comments/locale/zh_CN/LC_MESSAGES/django.mo index a59929dd9a..6da546c7a8 100644 Binary files a/mayan/apps/document_comments/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/document_comments/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_comments/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/document_comments/locale/zh_CN/LC_MESSAGES/django.po index 447c47680c..e4fc85a2a5 100644 --- a/mayan/apps/document_comments/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/document_comments/locale/zh_CN/LC_MESSAGES/django.po @@ -1,48 +1,50 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-03-21 21:09+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" +"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/" +"language/zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:23 -#| msgid "Delete comments" +#: apps.py:26 msgid "Document comments" msgstr "" -#: apps.py:41 +#: apps.py:46 msgid "Date" msgstr "日期" -#: apps.py:43 models.py:27 +#: apps.py:48 models.py:27 msgid "User" msgstr "用户" #. Translators: Comment here is a noun and refers to the actual text stored -#: apps.py:46 models.py:30 models.py:72 views.py:25 +#: apps.py:51 models.py:30 models.py:72 views.py:23 msgid "Comment" msgstr "评论" +#: apps.py:55 apps.py:59 links.py:22 models.py:73 permissions.py:7 +msgid "Comments" +msgstr "评论" + #: events.py:9 -#| msgid "Delete comments" msgid "Document comment created" msgstr "" #: events.py:13 -#| msgid "Delete comments" msgid "Document comment deleted" msgstr "" @@ -54,10 +56,6 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:22 models.py:73 permissions.py:7 -msgid "Comments" -msgstr "评论" - #: models.py:23 msgid "Document" msgstr "" @@ -78,18 +76,17 @@ msgstr "删除评论" msgid "View comments" msgstr "查看评论" -#: views.py:47 +#: views.py:41 #, python-format msgid "Add comment to document: %s" msgstr "添加评论到文档:%s" -#: views.py:90 +#: views.py:79 #, python-format -#| msgid "Delete comments" msgid "Delete comment: %s?" msgstr "" -#: views.py:122 +#: views.py:106 #, python-format msgid "Comments for document: %s" msgstr "" diff --git a/mayan/apps/document_comments/serializers.py b/mayan/apps/document_comments/serializers.py new file mode 100644 index 0000000000..4090cdadfd --- /dev/null +++ b/mayan/apps/document_comments/serializers.py @@ -0,0 +1,71 @@ +from __future__ import unicode_literals + +from rest_framework import serializers +from rest_framework.reverse import reverse + +from documents.serializers import DocumentSerializer +from user_management.serializers import UserSerializer + +from .models import Comment + + +class CommentSerializer(serializers.HyperlinkedModelSerializer): + document = DocumentSerializer(read_only=True) + document_comments_url = serializers.SerializerMethodField() + url = serializers.SerializerMethodField() + user = UserSerializer(read_only=True) + + class Meta: + fields = ( + 'comment', 'document', 'document_comments_url', 'id', + 'submit_date', 'url', 'user' + ) + model = Comment + + def get_document_comments_url(self, instance): + return reverse( + 'rest_api:comment-list', args=( + instance.document.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + def get_url(self, instance): + return reverse( + 'rest_api:comment-detail', args=( + instance.document.pk, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + + +class WritableCommentSerializer(serializers.ModelSerializer): + document = DocumentSerializer(read_only=True) + document_comments_url = serializers.SerializerMethodField() + url = serializers.SerializerMethodField() + user = UserSerializer(read_only=True) + + class Meta: + fields = ( + 'comment', 'document', 'document_comments_url', 'id', + 'submit_date', 'url', 'user' + ) + model = Comment + read_only_fields = ('document',) + + def create(self, validated_data): + validated_data['document'] = self.context['document'] + validated_data['user'] = self.context['request'].user + return super(WritableCommentSerializer, self).create(validated_data) + + def get_document_comments_url(self, instance): + return reverse( + 'rest_api:comment-list', args=( + instance.document.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + def get_url(self, instance): + return reverse( + 'rest_api:comment-detail', args=( + instance.document.pk, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) diff --git a/mayan/apps/document_comments/tests/__init__.py b/mayan/apps/document_comments/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/mayan/apps/document_comments/tests/literals.py b/mayan/apps/document_comments/tests/literals.py new file mode 100644 index 0000000000..489cba38be --- /dev/null +++ b/mayan/apps/document_comments/tests/literals.py @@ -0,0 +1,3 @@ +from __future__ import unicode_literals + +TEST_COMMENT_TEXT = 'test comment text' diff --git a/mayan/apps/document_comments/tests/test_api.py b/mayan/apps/document_comments/tests/test_api.py new file mode 100644 index 0000000000..72dd645028 --- /dev/null +++ b/mayan/apps/document_comments/tests/test_api.py @@ -0,0 +1,97 @@ +from __future__ import unicode_literals + +from django.contrib.auth import get_user_model +from django.core.urlresolvers import reverse +from django.test import override_settings + +from rest_framework.test import APITestCase + +from documents.models import DocumentType +from documents.tests.literals import ( + TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +) +from user_management.tests.literals import ( + TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME +) + +from ..models import Comment + +from .literals import TEST_COMMENT_TEXT + + +@override_settings(OCR_AUTO_OCR=False) +class CommentAPITestCase(APITestCase): + def setUp(self): + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object + ) + + def tearDown(self): + if hasattr(self, 'document_type'): + self.document_type.delete() + + def _create_comment(self): + return self.document.comments.create( + comment=TEST_COMMENT_TEXT, user=self.admin_user + ) + + def test_comment_create_view(self): + response = self.client.post( + reverse( + 'rest_api:comment-list', args=(self.document.pk,) + ), { + 'comment': TEST_COMMENT_TEXT + } + ) + + self.assertEqual(response.status_code, 201) + comment = Comment.objects.first() + self.assertEqual(Comment.objects.count(), 1) + self.assertEqual(response.data['id'], comment.pk) + + def test_comment_delete_view(self): + comment = self._create_comment() + + self.client.delete( + reverse( + 'rest_api:comment-detail', args=(self.document.pk, comment.pk,) + ) + ) + + self.assertEqual(Comment.objects.count(), 0) + + def test_comment_detail_view(self): + comment = self._create_comment() + + response = self.client.get( + reverse( + 'rest_api:comment-detail', args=(self.document.pk, comment.pk,) + ) + ) + + self.assertEqual(response.data['comment'], comment.comment) + + def test_comment_list_view(self): + comment = self._create_comment() + + response = self.client.get( + reverse('rest_api:comment-list', args=(self.document.pk,)) + ) + + self.assertEqual( + response.data['results'][0]['comment'], comment.comment + ) diff --git a/mayan/apps/document_comments/urls.py b/mayan/apps/document_comments/urls.py index ddb4659ef2..2dd6929abf 100644 --- a/mayan/apps/document_comments/urls.py +++ b/mayan/apps/document_comments/urls.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from django.conf.urls import url +from .api_views import APICommentListView, APICommentView from .views import ( DocumentCommentCreateView, DocumentCommentDeleteView, DocumentCommentListView @@ -21,3 +22,14 @@ urlpatterns = [ DocumentCommentListView.as_view(), name='comments_for_document' ), ] + +api_urls = [ + url( + r'^documents/(?P[0-9]+)/comments/$', + APICommentListView.as_view(), name='comment-list' + ), + url( + r'^documents/(?P[0-9]+)/comments/(?P[0-9]+)/$', + APICommentView.as_view(), name='comment-detail' + ), +] diff --git a/mayan/apps/document_indexing/apps.py b/mayan/apps/document_indexing/apps.py index 2e95e0c807..3c19e832e3 100644 --- a/mayan/apps/document_indexing/apps.py +++ b/mayan/apps/document_indexing/apps.py @@ -44,8 +44,8 @@ from .widgets import get_instance_link, index_instance_item_link, node_level class DocumentIndexingApp(MayanAppConfig): app_namespace = 'indexing' app_url = 'indexing' + has_tests = True name = 'document_indexing' - test = True verbose_name = _('Document indexing') def ready(self): diff --git a/mayan/apps/document_indexing/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/ar/LC_MESSAGES/django.mo index ee0bee6894..ad9bb473b6 100644 Binary files a/mayan/apps/document_indexing/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/ar/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/ar/LC_MESSAGES/django.po index 3ed97bc974..ec51579cbd 100644 --- a/mayan/apps/document_indexing/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/ar/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Mohammed ALDOUB , 2013 @@ -9,54 +9,55 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:33+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/" +"ar/)\n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" #: admin.py:24 msgid "None" msgstr "لا شيء" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "" @@ -64,12 +65,12 @@ msgstr "" msgid "Creation date" msgstr "" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Indexes" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "" @@ -104,89 +105,90 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" "Causes this index to be visible and updated when document data changes." -msgstr "Causes this index to be visible and updated when document data changes." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." msgstr "Causes this node to be visible and updated when document data changes." -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." -msgstr "Check this option to have this node act as a container for documents and not as a parent for further nodes." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." +msgstr "" +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "قيمة" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "الوثائق" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -214,74 +216,73 @@ msgstr "View document indexes" msgid "Rebuild document indexes" msgstr "Rebuild document indexes" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." msgstr "On large databases this operation may take some time to execute." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -346,9 +347,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -385,11 +388,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/bg/LC_MESSAGES/django.mo index 82a948632a..b754d73776 100644 Binary files a/mayan/apps/document_indexing/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/bg/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/bg/LC_MESSAGES/django.po index 52ea6c168d..42bf4ab9f9 100644 --- a/mayan/apps/document_indexing/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/bg/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Pavlin Koldamov , 2012 @@ -9,54 +9,54 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:33+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" +"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: admin.py:24 msgid "None" msgstr "Няма" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "" @@ -64,12 +64,12 @@ msgstr "" msgid "Creation date" msgstr "" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Индекси" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "" @@ -104,89 +104,89 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "Предизвиква този индекс да бъдат видим и актуализиран, когато данните в документа се променят." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"Предизвиква този индекс да бъдат видим и актуализиран, когато данните в " +"документа се променят." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." msgstr "" -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." msgstr "" -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Стойност" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Документи" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -214,74 +214,75 @@ msgstr "" msgid "Rebuild document indexes" msgstr "" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." -msgstr "При големи бази данни тази операция може да отнеме известно време за изпълнение." +msgstr "" +"При големи бази данни тази операция може да отнеме известно време за " +"изпълнение." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -346,9 +347,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -385,11 +388,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/bs_BA/LC_MESSAGES/django.mo index 04b1e5f483..143ee3e63e 100644 Binary files a/mayan/apps/document_indexing/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/bs_BA/LC_MESSAGES/django.po index 2bbbb288a3..7c78f9d60f 100644 --- a/mayan/apps/document_indexing/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/bs_BA/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # www.ping.ba , 2013 @@ -9,54 +9,55 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:34+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" +"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/" +"rosarior/mayan-edms/language/bs_BA/)\n" +"Language: bs_BA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bs_BA\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" +"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" #: admin.py:24 msgid "None" msgstr "Nijedno" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "" @@ -64,12 +65,12 @@ msgstr "" msgid "Creation date" msgstr "" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Indeksi" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "" @@ -104,89 +105,93 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "Uzrokuje da će ovaj indeks biti vidljiv i update-ovan kad se promjene podaci dokumenta." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"Uzrokuje da će ovaj indeks biti vidljiv i update-ovan kad se promjene podaci " +"dokumenta." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." -msgstr "Uzrokuje da će ovaj nod biti vidljiv i update-ovan kad se promjene podaci dokumenta." +msgstr "" +"Uzrokuje da će ovaj nod biti vidljiv i update-ovan kad se promjene podaci " +"dokumenta." -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." -msgstr "Označite ovu opciju da ovaj nod služi kao kontejner za dokumente a ne kao parent za buduće nodove." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." +msgstr "" +"Označite ovu opciju da ovaj nod služi kao kontejner za dokumente a ne kao " +"parent za buduće nodove." -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Vrijednost" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Dokumenti" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -214,74 +219,73 @@ msgstr "Pregledaj indekse dokumenata" msgid "Rebuild document indexes" msgstr " Obnovi indekse dokumenata" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." msgstr "Na velikim bazama podataka ove operacije mogu potrajati neko vrijeme." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -346,9 +350,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -385,11 +391,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/da/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/da/LC_MESSAGES/django.mo index 1aff61ff6c..b231a91775 100644 Binary files a/mayan/apps/document_indexing/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/da/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/da/LC_MESSAGES/django.po index 7e9a0f3b4f..bdbb4b18ae 100644 --- a/mayan/apps/document_indexing/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/da/LC_MESSAGES/django.po @@ -1,61 +1,61 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:33+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" +"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/" +"da/)\n" +"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: admin.py:24 msgid "None" msgstr "Ingen" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "" @@ -63,12 +63,12 @@ msgstr "" msgid "Creation date" msgstr "" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "" @@ -103,89 +103,87 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." msgstr "" -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." msgstr "" -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." msgstr "" -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Dokumenter" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -213,74 +211,73 @@ msgstr "" msgid "Rebuild document indexes" msgstr "" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." msgstr "På store databaser kan denne operation tage lidt tid at udføre." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -345,9 +342,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -384,11 +383,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/de_DE/LC_MESSAGES/django.mo index ace206a5ca..9fbeadd8df 100644 Binary files a/mayan/apps/document_indexing/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/de_DE/LC_MESSAGES/django.po index 26cf2c0e75..cefa357344 100644 --- a/mayan/apps/document_indexing/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/de_DE/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Berny , 2015-2016 @@ -13,54 +13,54 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:34+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" +"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: admin.py:24 msgid "None" msgstr "Keine" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "Dokumententypen" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "Dokumentenindices" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "Bezeichner" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "Abkürzung" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "Aktiviert" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "Elemente" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "Stufe" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "Dokument verknüpft" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "Knotenpunkt" @@ -68,12 +68,12 @@ msgstr "Knotenpunkt" msgid "Creation date" msgstr "Erstellungsdatum" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Indices" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "Index erstellen" @@ -106,91 +106,101 @@ msgstr "Neuer Unterknoten" msgid "" "Error indexing document: %(document)s; expression: %(expression)s; " "%(exception)s" -msgstr "Fehler bei der Indexierung von Dokument %(document)s; Ausdruck: %(expression)s; %(exception)s" +msgstr "" +"Fehler bei der Indexierung von Dokument %(document)s; Ausdruck: " +"%(expression)s; %(exception)s" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "Interner Name um diesen Index zu identifizieren" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "Bewirkt Sichtbarkeit und Aktualisierung des Index, wenn Dokumente geändert werden." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"Bewirkt Sichtbarkeit und Aktualisierung des Index, wenn Dokumente geändert " +"werden." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "Index" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "Index-Instanzen" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" -msgstr "Vorlage/Template zur Generierung eingeben. Django's Standard-Vorlagen-Sprache benutzen (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" +msgstr "" +"Vorlage/Template zur Generierung eingeben. Django's Standard-Vorlagen-" +"Sprache benutzen (https://docs.djangoproject.com/en/1.7/ref/templates/" +"builtins/)" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "Indexierungsausdruck" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." -msgstr "Bewirkt Sichtbarkeit und Aktualisierung des Index, wenn Dokumente geändert werden." +msgstr "" +"Bewirkt Sichtbarkeit und Aktualisierung des Index, wenn Dokumente geändert " +"werden." -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." -msgstr "Wählen Sie diese Option, wenn Dokumente in diesem Knoten dargestellt werden sollen (und dieser Knoten nicht als Eltern-Knoten für weitere Kind-Knotenpunkte fungieren soll)." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." +msgstr "" +"Wählen Sie diese Option, wenn Dokumente in diesem Knoten dargestellt werden " +"sollen (und dieser Knoten nicht als Eltern-Knoten für weitere Kind-" +"Knotenpunkte fungieren soll)." -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "Dokumente verknüpfen" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "Wurzel" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "Index Knotenvorlage" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "Index Knotenvorlagen" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "Index Knotenpunkt" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Wert" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Dokumente" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "Indexknotenpunkt" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "Indexknotenpunkte" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "Indexknotenpunkt" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "Indexknotenpunkte" @@ -218,74 +228,74 @@ msgstr "Dokumentenindices anzeigen" msgid "Rebuild document indexes" msgstr "Dokumentenindices neu aufbauen" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "Index %s löschen?" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "Index %s bearbeiten" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "Verfügbare Dokumententypen" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "Verknüpfte Dokumententypen" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "Mit Index %s verknüpfte Dokumententypen" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "Baumvorlagen für Index %s" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "Unterknotenpunkt von %s erstellen" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "Indexvorlagen-Knotenpunkt %s löschen?" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "Indexvorlagen-Knotenpunkt %s bearbeiten" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "Navigation: %s" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "Inhalt von Index %s" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "Knotenpunkte der Indices, die Dokumente enthalten: %s" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." -msgstr "Bei großen Datenbanken kann dieser Vorgang einige Zeit in Anspruch nehmen." +msgstr "" +"Bei großen Datenbanken kann dieser Vorgang einige Zeit in Anspruch nehmen." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "Alle Indices neu aufbauen?" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "Indexwiederaufbau erfolgreich eingereiht" @@ -350,9 +360,11 @@ msgstr "Indexwiederaufbau erfolgreich eingereiht" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -389,11 +401,11 @@ msgstr "Indexwiederaufbau erfolgreich eingereiht" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.mo index 097ad6810a..7c4f035743 100644 Binary files a/mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.po index 8a2bde3c51..c3fd5c81b9 100644 --- a/mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2012-12-12 06:05+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -22,7 +22,7 @@ msgstr "" msgid "None" msgstr "" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 #, fuzzy msgid "Document types" msgstr "document types" @@ -33,35 +33,35 @@ msgstr "document types" msgid "Document indexing" msgstr "document indexes" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 #, fuzzy msgid "Enabled" msgstr "enabled" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 #, fuzzy msgid "Items" msgstr "items" -#: apps.py:144 +#: apps.py:104 #, fuzzy msgid "Level" msgstr "level" -#: apps.py:152 +#: apps.py:112 #, fuzzy msgid "Has document links?" msgstr "has document links?" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "" @@ -70,12 +70,12 @@ msgstr "" msgid "Creation date" msgstr "create index" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Indexes" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 #, fuzzy msgid "Create index" msgstr "create index" @@ -116,48 +116,48 @@ msgid "" msgstr "" "Error updating document index, expression: %(expression)s; %(exception)s" -#: models.py:29 +#: models.py:27 #, fuzzy #| msgid "Internal name used to reference this index." msgid "This values will be used by other apps to reference this index." msgstr "Internal name used to reference this index." -#: models.py:35 +#: models.py:33 msgid "Causes this index to be visible and updated when document data changes." msgstr "" "Causes this index to be visible and updated when document data changes." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 #, fuzzy msgid "Index" msgstr "Indexes" -#: models.py:101 +#: models.py:99 #, fuzzy msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 #, fuzzy msgid "Index instances" msgstr "index instance" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 #, fuzzy msgid "Indexing expression" msgstr "indexing expression" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." msgstr "Causes this node to be visible and updated when document data changes." -#: models.py:131 +#: models.py:129 msgid "" "Check this option to have this node act as a container for documents and not " "as a parent for further nodes." @@ -165,56 +165,56 @@ msgstr "" "Check this option to have this node act as a container for documents and not " "as a parent for further nodes." -#: models.py:134 +#: models.py:132 #, fuzzy msgid "Link documents" msgstr "link documents" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 #, fuzzy msgid "Index node template" msgstr "index template node" -#: models.py:145 +#: models.py:143 #, fuzzy msgid "Indexes node template" msgstr "indexes template nodes" -#: models.py:153 +#: models.py:151 #, fuzzy msgid "Index template node" msgstr "index template node" -#: models.py:156 +#: models.py:154 #, fuzzy msgid "Value" msgstr "value" -#: models.py:159 +#: models.py:157 #, fuzzy msgid "Documents" msgstr "documents" -#: models.py:204 +#: models.py:197 #, fuzzy msgid "Index node instance" msgstr "index instance" -#: models.py:205 +#: models.py:198 #, fuzzy msgid "Indexes node instances" msgstr "index instance" -#: models.py:213 +#: models.py:206 #, fuzzy msgid "Document index node instance" msgstr "index instance" -#: models.py:214 +#: models.py:207 #, fuzzy msgid "Document indexes node instances" msgstr "index instance" @@ -243,77 +243,77 @@ msgstr "View document indexes" msgid "Rebuild document indexes" msgstr "Rebuild document indexes" -#: views.py:51 +#: views.py:49 #, fuzzy, python-format #| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "Delete document indexes" -#: views.py:64 +#: views.py:62 #, fuzzy, python-format msgid "Edit index: %s" msgstr "edit index: %s" -#: views.py:81 +#: views.py:79 #, fuzzy msgid "Available document types" msgstr "document types" -#: views.py:83 +#: views.py:81 #, fuzzy msgid "Document types linked" msgstr "document types" -#: views.py:106 +#: views.py:96 #, fuzzy, python-format msgid "Document types linked to index: %s" msgstr "document types for index: %s" -#: views.py:145 +#: views.py:135 #, fuzzy, python-format msgid "Tree template nodes for index: %s" msgstr "tree template nodes for index: %s" -#: views.py:172 +#: views.py:157 #, fuzzy, python-format msgid "Create child node of: %s" msgstr "create child node" -#: views.py:196 +#: views.py:181 #, fuzzy, python-format msgid "Delete the index template node: %s?" msgstr "edit index template node: %s" -#: views.py:218 +#: views.py:203 #, fuzzy, python-format msgid "Edit the index template node: %s?" msgstr "edit index template node: %s" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, fuzzy, python-format msgid "Contents for index: %s" msgstr "contents for index: %s" -#: views.py:331 +#: views.py:307 #, fuzzy, python-format msgid "Indexes nodes containing document: %s" msgstr "indexes containing: %s" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." msgstr "On large databases this operation may take some time to execute." -#: views.py:342 +#: views.py:318 #, fuzzy msgid "Rebuild all indexes?" msgstr "rebuild indexes" -#: views.py:351 +#: views.py:327 #, fuzzy msgid "Index rebuild queued successfully." msgstr "Index rebuild completed successfully." diff --git a/mayan/apps/document_indexing/locale/es/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/es/LC_MESSAGES/django.mo index 75df19f1e7..e6c5f7e376 100644 Binary files a/mayan/apps/document_indexing/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/es/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/es/LC_MESSAGES/django.po index ebe1770c8d..a231b90087 100644 --- a/mayan/apps/document_indexing/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/es/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # jmcainzos , 2014 @@ -11,54 +11,54 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-11-23 06:46+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: admin.py:24 msgid "None" msgstr "Ninguno" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "Tipos de documento" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "Indexación de documentos" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "Etiqueta" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "Identificador" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "Habilitado" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "Elementos" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "Nível" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "El documento tiene enlaces?" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "Nodo" @@ -66,12 +66,12 @@ msgstr "Nodo" msgid "Creation date" msgstr "Fecha de creación" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Índices" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "Crear índice" @@ -104,91 +104,101 @@ msgstr "nuevo nodo secundario" msgid "" "Error indexing document: %(document)s; expression: %(expression)s; " "%(exception)s" -msgstr "Error indexando documento: %(document)s; expresión: %(expression)s; %(exception)s" +msgstr "" +"Error indexando documento: %(document)s; expresión: %(expression)s; " +"%(exception)s" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." -msgstr "Estos valores serán utilizados por otras aplicaciones para hacer referencia a este índice." +msgstr "" +"Estos valores serán utilizados por otras aplicaciones para hacer referencia " +"a este índice." -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "Hace que este índice sea visible y actualizado cuando los datos de documentos cambien." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"Hace que este índice sea visible y actualizado cuando los datos de " +"documentos cambien." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "índice" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "Instancias de índices" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" -msgstr "Introduzca una plantilla para generar. Use el lenguaje de plantillas de Django (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). " +msgstr "" +"Introduzca una plantilla para generar. Use el lenguaje de plantillas de " +"Django (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). " -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "expresión de indexación" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." -msgstr "Hace que este nodo sea visible y actualizado cuando los datos de los documentos son cambiados." +msgstr "" +"Hace que este nodo sea visible y actualizado cuando los datos de los " +"documentos son cambiados." -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." -msgstr "Marque esta opción para que el nodo actúe como un contenedor de documentos y no como un padre para otros nodos secundarios." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." +msgstr "" +"Marque esta opción para que el nodo actúe como un contenedor de documentos y " +"no como un padre para otros nodos secundarios." -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "enlace de documentos" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "raíz" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "nodo de plantilla de indice" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "nodos de plantillas de índices" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "nodo de plantilla de indice" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Valor" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Documentos" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "índice de nodo de instancia" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "nodos de instancias de indices" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -216,74 +226,75 @@ msgstr "Ver los índices de documentos" msgid "Rebuild document indexes" msgstr "Generar índices de documentos" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "¿Borrar el indice: %s?" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "Editar índice: %s" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "Tipos de documentos disponibles" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "Tipos de documentos enlazados " -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "Tipos de documentos enlazados al índice: %s" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "nodos de la plantilla del árbol del índice: %s" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "Crear nodo hijo de: %s" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "¿Borrar el nodo de plantilla de indice: %s?" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "¿Editar el nodo de plantilla de indice: %s?" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "Navegación: %s" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "contenido del indice: %s" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "Nodos de indices que contienen el documento: %s" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." -msgstr "En bases de datos de gran tamaño esta operación puede tardar algún tiempo en ejecutarse." +msgstr "" +"En bases de datos de gran tamaño esta operación puede tardar algún tiempo en " +"ejecutarse." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "¿Reconstruir todos los índices?" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "Reconstrucción de Índices en espera de forma exitosa." @@ -348,9 +359,11 @@ msgstr "Reconstrucción de Índices en espera de forma exitosa." #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -387,11 +400,11 @@ msgstr "Reconstrucción de Índices en espera de forma exitosa." #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/fa/LC_MESSAGES/django.mo index 7b6a192551..030d38dfaa 100644 Binary files a/mayan/apps/document_indexing/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/fa/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/fa/LC_MESSAGES/django.po index a18b5229a3..ddfbe2f3f0 100644 --- a/mayan/apps/document_indexing/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/fa/LC_MESSAGES/django.po @@ -1,61 +1,61 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:34+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/" +"language/fa/)\n" +"Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" #: admin.py:24 msgid "None" msgstr "ناموجود" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "انواع سند" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "برچسب" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "Slug" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "فعال شده" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "اقلام" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "سطح" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "آیا سند دارای پیوند است؟" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "گره" @@ -63,12 +63,12 @@ msgstr "گره" msgid "Creation date" msgstr "تاریخ ایجاد" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "اندیس ها" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "ایجاد اندیس" @@ -101,91 +101,94 @@ msgstr "گره فرزند جدید" msgid "" "Error indexing document: %(document)s; expression: %(expression)s; " "%(exception)s" -msgstr "خطای ساختن ایندکس سند: %(document)s; , عبارت : %(expression)s; %(exception)s" +msgstr "" +"خطای ساختن ایندکس سند: %(document)s; , عبارت : %(expression)s; %(exception)s" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "باعث میشود که این ایندکس قابل رویت شود و در زمان تغییر داده سند بروز رسانی شود." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"باعث میشود که این ایندکس قابل رویت شود و در زمان تغییر داده سند بروز رسانی " +"شود." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "اندیس" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "عبارت اندیس گذاری" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." -msgstr "باعث میشود که این ایندکس قابل رویت شود و در زمان تغییر داده سند بروز رسانی شود." +msgstr "" +"باعث میشود که این ایندکس قابل رویت شود و در زمان تغییر داده سند بروز رسانی " +"شود." -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." msgstr "بررسی شود که اینکه این گره ظرفی برای اسناد است و نه پدر گره های دیگر." -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "اسناد پیوند" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "ریشه" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "الگوی گره اندیس" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "الگوی گره اندیس ها" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "گره الگوی اندیس" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "مقدار" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "اسناد" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "موردی ازگره اندیس" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "موارد گره اندیس ها" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -213,74 +216,73 @@ msgstr "دیدن ایندکسهای سند" msgid "Rebuild document indexes" msgstr "بازسازی ایندکسهای سند" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "ویرایش اندیس %s" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "گره الگوی درخت اندیس %s" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "محتوا برای اندیس : %s" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." msgstr "در پایگاه داده بزرگ این عملیات مدت زیادی بطول خواهد انجامید." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "ساخت مجدد اندیسها در صف قرار گرفت." @@ -345,9 +347,11 @@ msgstr "ساخت مجدد اندیسها در صف قرار گرفت." #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -384,11 +388,11 @@ msgstr "ساخت مجدد اندیسها در صف قرار گرفت." #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/fr/LC_MESSAGES/django.mo index fbfe04634f..e66b145ea7 100644 Binary files a/mayan/apps/document_indexing/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/fr/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/fr/LC_MESSAGES/django.po index 11ff9120df..178b3cbfb3 100644 --- a/mayan/apps/document_indexing/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/fr/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Pierre Lhoste , 2012 @@ -11,54 +11,54 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:34+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" +"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/" +"fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: admin.py:24 msgid "None" msgstr "Aucun" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "Types de document" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "Indexation de document" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "Libellé" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "Jeton" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "Activé" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "Éléments" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "Niveau" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "Est lié à d'autres documents ?" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "Noeud" @@ -66,12 +66,12 @@ msgstr "Noeud" msgid "Creation date" msgstr "Date de création" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Indexes" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "Créer un index" @@ -89,7 +89,8 @@ msgstr "Modèle d'arborescence" #: links.py:54 msgid "Deletes and creates from scratch all the document indexes." -msgstr "Supprimer et reconstruire les indexes des documents en partant de zéro." +msgstr "" +"Supprimer et reconstruire les indexes des documents en partant de zéro." #: links.py:57 msgid "Rebuild indexes" @@ -104,91 +105,101 @@ msgstr "Nouveau noeud enfant" msgid "" "Error indexing document: %(document)s; expression: %(expression)s; " "%(exception)s" -msgstr "Erreur lors de l'indexation du document: %(document)s; expression: %(expression)s; %(exception)s" +msgstr "" +"Erreur lors de l'indexation du document: %(document)s; expression: " +"%(expression)s; %(exception)s" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." -msgstr "Ces valeurs seront utilisées par d'autres applications pour référencer cet indexe." +msgstr "" +"Ces valeurs seront utilisées par d'autres applications pour référencer cet " +"indexe." -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "Permet à cet index d'être à la fois visible et mis à jour quand le contenu d'un document est modifié." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"Permet à cet index d'être à la fois visible et mis à jour quand le contenu " +"d'un document est modifié." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "Index" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "Instance d'indexe" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" -msgstr "Saisissez un modèle à restituer. Utiliser le langage de rendu de Django par défaut (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" +msgstr "" +"Saisissez un modèle à restituer. Utiliser le langage de rendu de Django par " +"défaut (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "Expression d'indexation" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." -msgstr "Permet à ce noeud d'être visible et mis à jour quand le contenu d'un document est modifié." +msgstr "" +"Permet à ce noeud d'être visible et mis à jour quand le contenu d'un " +"document est modifié." -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." -msgstr "Cochez cette option pour permettre à ce noeud d'être un conteneur de documents et pas seulement un noeud parent d'autres noeuds enfants." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." +msgstr "" +"Cochez cette option pour permettre à ce noeud d'être un conteneur de " +"documents et pas seulement un noeud parent d'autres noeuds enfants." -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "Lier les documents" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "Racine" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "Noeud de modèle d'index" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "Noeud de modèle d'index" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "Noeud de modèle d'index" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Valeur" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Documents" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "Noeud d'instance d'index" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "Noeud d'instances d'indexes" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "Instance de noeud d'indexe de document" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "Instances de noeuds d'indexe de document" @@ -216,74 +227,75 @@ msgstr "Afficher les indexes des documents" msgid "Rebuild document indexes" msgstr "Reconstruire les indexes des documents" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "Supprimer l'indexe : %s ?" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "Modifier l'index: %s" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "Types de document disponible" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "Types de document liés" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "Types de documents liés à l'indexe : %s" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "Noeuds de modèles arborescentes pour l'index: %s" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "Créer un noeud enfant pour: %s" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "Supprimer le noeud du modèle d'indexe: %s ?" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "Modifier le noeud du modèle d'index: %s" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "Navigation: %s" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "Contenu de l'index:%s" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "Noeuds d'indexe contenant le document : %s" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." -msgstr "Sur de grosses bases de données, cette opération peut prendre un certain temps." +msgstr "" +"Sur de grosses bases de données, cette opération peut prendre un certain " +"temps." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "Reconstruire tous les indexes ?" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "La ré-indexation en attente a été faite avec succès." @@ -348,9 +360,11 @@ msgstr "La ré-indexation en attente a été faite avec succès." #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -387,11 +401,11 @@ msgstr "La ré-indexation en attente a été faite avec succès." #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/hu/LC_MESSAGES/django.mo index 605e626c6d..6212905c99 100644 Binary files a/mayan/apps/document_indexing/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/hu/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/hu/LC_MESSAGES/django.po index 0c4474260c..7feca63fe6 100644 --- a/mayan/apps/document_indexing/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/hu/LC_MESSAGES/django.po @@ -1,61 +1,61 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:33+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" +"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/hu/)\n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: admin.py:24 msgid "None" msgstr "Semmi" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "" @@ -63,12 +63,12 @@ msgstr "" msgid "Creation date" msgstr "" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "" @@ -103,89 +103,87 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." msgstr "" -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." msgstr "" -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." msgstr "" -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "dokumentumok" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -213,74 +211,73 @@ msgstr "" msgid "Rebuild document indexes" msgstr "" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." msgstr "A nagy adatbázisok esetében a művelet sokáig is tarthat." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -345,9 +342,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -384,11 +383,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/id/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/id/LC_MESSAGES/django.mo index 707653be22..7dd4fa7e69 100644 Binary files a/mayan/apps/document_indexing/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/id/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/id/LC_MESSAGES/django.po index 74491109cf..74217c150b 100644 --- a/mayan/apps/document_indexing/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/id/LC_MESSAGES/django.po @@ -1,61 +1,61 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:33+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" +"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/" +"language/id/)\n" +"Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" #: admin.py:24 msgid "None" msgstr "" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "" @@ -63,12 +63,12 @@ msgstr "" msgid "Creation date" msgstr "" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "" @@ -103,89 +103,87 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." msgstr "" -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." msgstr "" -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." msgstr "" -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Dokumen" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -213,74 +211,75 @@ msgstr "" msgid "Rebuild document indexes" msgstr "" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." -msgstr "Pada database yang besar pekerjaan berikut mungkin akan membutuhkan waktu untuk dilaksanakan." +msgstr "" +"Pada database yang besar pekerjaan berikut mungkin akan membutuhkan waktu " +"untuk dilaksanakan." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -345,9 +344,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -384,11 +385,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/it/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/it/LC_MESSAGES/django.mo index c236cbf878..e2f3662228 100644 Binary files a/mayan/apps/document_indexing/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/it/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/it/LC_MESSAGES/django.po index dd51315a8b..88a9235bdd 100644 --- a/mayan/apps/document_indexing/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/it/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Carlo Zanatto <>, 2012 @@ -12,54 +12,54 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-30 21:18+0000\n" "Last-Translator: Marco Camplese \n" -"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" +"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: admin.py:24 msgid "None" msgstr "Nessuno" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "Tipi di documento" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "Indicizzazione documento" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "etichetta" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "Slug" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "Abilitato" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "Articoli" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "Livello" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "Il documento ha un collegamento?" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "Nodo" @@ -67,12 +67,12 @@ msgstr "Nodo" msgid "Creation date" msgstr "Data di creazione" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Indici" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "Crea indice" @@ -105,91 +105,100 @@ msgstr "Novo nodo figlio" msgid "" "Error indexing document: %(document)s; expression: %(expression)s; " "%(exception)s" -msgstr "Errore nell'ndicizzazione del documento: %(document)s; espressione: %(expression)s; %(exception)s" +msgstr "" +"Errore nell'ndicizzazione del documento: %(document)s; espressione: " +"%(expression)s; %(exception)s" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." -msgstr "Questo valore è utilizzato dalle altre apps per riferirsi a questo indice." +msgstr "" +"Questo valore è utilizzato dalle altre apps per riferirsi a questo indice." -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "Fa sì che questo indice possa essere visibile e aggiornato quando i dati del documento cambiano." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"Fa sì che questo indice possa essere visibile e aggiornato quando i dati del " +"documento cambiano." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "Indice" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "Instanze indice" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" -msgstr "Inserisci il template da renderizzare. Usa il linguaggio di template di Django (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" +msgstr "" +"Inserisci il template da renderizzare. Usa il linguaggio di template di " +"Django (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "Espressione di indicizzazione" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." -msgstr "Fa sì che questo nodo possa essere visibili e aggiornato quando i dati del documento cambiano." +msgstr "" +"Fa sì che questo nodo possa essere visibili e aggiornato quando i dati del " +"documento cambiano." -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." -msgstr "Selezionare questa opzione per questo specifico nodo quale contenitore per i documenti e non come un genitore per ulteriori nodi." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." +msgstr "" +"Selezionare questa opzione per questo specifico nodo quale contenitore per i " +"documenti e non come un genitore per ulteriori nodi." -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "Documenti di collegamento" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "Principale" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "Indice del nodo Template " -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "Indici dei nodi Template" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "Indice del nodo Template" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Valore" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Documenti" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "Istanza nodo Indice" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "Istanze nodo indici" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "Istanza del nodo indice del documento" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "Istanze dei nodi indice del documento" @@ -217,74 +226,75 @@ msgstr "Visualizza indici documento" msgid "Rebuild document indexes" msgstr "Ricostruisci indici documento" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "Cancellare l'indice: %s?" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "Modifica indice: %s" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "Tipi di documento disponibili" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "Tipi di documento collegati" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "Tipi di documento collegati all'indice: %s" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "Template principale per i nodi dell'indice: %s" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "Crea un nodo figlio di: %s" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "Cancellare il template del nodo indice: %s?" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "Modificare il template del nodo indice: %s?" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "Navigazione: %s" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "Contenuti per l'indice: %s" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "Indici contenuti nel documento: %s" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." -msgstr "Per un database di grosse dimensioni l'operazione protrebbe aver bisogno di tempo." +msgstr "" +"Per un database di grosse dimensioni l'operazione protrebbe aver bisogno di " +"tempo." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "Ricostruire tutti gli indici?" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "Ricostruzione dell'indice messo in coda." @@ -349,9 +359,11 @@ msgstr "Ricostruzione dell'indice messo in coda." #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -388,11 +400,11 @@ msgstr "Ricostruzione dell'indice messo in coda." #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/nl_NL/LC_MESSAGES/django.mo index 2b7a12d84c..b23595bc8f 100644 Binary files a/mayan/apps/document_indexing/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/nl_NL/LC_MESSAGES/django.po index 2295889bb4..ce937921de 100644 --- a/mayan/apps/document_indexing/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/nl_NL/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Evelijn Saaltink , 2016 @@ -10,54 +10,54 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-11-09 16:41+0000\n" "Last-Translator: Evelijn Saaltink \n" -"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-" +"edms/language/nl_NL/)\n" +"Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: admin.py:24 msgid "None" msgstr "Geen" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "Documentsoorten" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "Documentindexering" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "Label" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "Ingeschakeld" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "Items" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "Niveau" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "Node" @@ -65,12 +65,12 @@ msgstr "Node" msgid "Creation date" msgstr "Aanmaakdatum" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Indexeringen" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "Indexering aanmaken" @@ -105,89 +105,90 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "Maakt deze index zichtbaar en 'up-to-date' wanneer document gegevens wijzigd." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"Maakt deze index zichtbaar en 'up-to-date' wanneer document gegevens wijzigd." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "Index" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "Indexeringsexpressie" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." -msgstr "Maakt deze node zichtbaar en 'up-to-date' wanneer document gegevens wijzigen" +msgstr "" +"Maakt deze node zichtbaar en 'up-to-date' wanneer document gegevens wijzigen" -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." -msgstr "Selecteer deze optie, wanneer deze node alleen documenten dient te bevatten. " +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." +msgstr "" +"Selecteer deze optie, wanneer deze node alleen documenten dient te bevatten. " -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "Koppel documenten" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Waarde" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Documenten" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -215,74 +216,73 @@ msgstr "Bekijk document-indexeringen" msgid "Rebuild document indexes" msgstr "documenten opnieuw indexeren" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "Beschikbare documentsoorten" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." msgstr "Voor een grote database kan deze operatie lang duren." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -347,9 +347,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -386,11 +388,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/pl/LC_MESSAGES/django.mo index bc6e72ca81..48523a5004 100644 Binary files a/mayan/apps/document_indexing/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/pl/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/pl/LC_MESSAGES/django.po index 5b67bfd82d..2e88b22401 100644 --- a/mayan/apps/document_indexing/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/pl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # mic , 2012,2015 @@ -11,54 +11,55 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:34+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" +"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/" +"pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" #: admin.py:24 msgid "None" msgstr "Brak" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "Typy dokumentów" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "Etykieta" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "Slug" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "Włączony" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "Pozycje" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "Węzeł" @@ -66,12 +67,12 @@ msgstr "Węzeł" msgid "Creation date" msgstr "Data utworzenia" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Indeksy" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "Tworzenie indeksu" @@ -106,89 +107,93 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "Powoduje że ten wskaźnik będzie widoczny i zaktualizowany podczas zmiany danych dokumentów." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"Powoduje że ten wskaźnik będzie widoczny i zaktualizowany podczas zmiany " +"danych dokumentów." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "Indeks" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" -msgstr "Podaj szablon do wyrenderowania. Użyj domyślnego języka szablonów Django (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" +msgstr "" +"Podaj szablon do wyrenderowania. Użyj domyślnego języka szablonów Django " +"(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." msgstr "Causes this node to be visible and updated when document data changes." -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." -msgstr "Check this option to have this node act as a container for documents and not as a parent for further nodes." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." +msgstr "" +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Wartość" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Dokumenty" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -216,74 +221,73 @@ msgstr "Zobacz indeksy dokumentów" msgid "Rebuild document indexes" msgstr "Odbuduj indeksy dokumentów" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "Dostępne typy dokumentów" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "Zawartość indeksu: %s" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "Węzły indeksów zawierające dokument: %s" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." msgstr "Na dużych bazach danych operacja może chwilę potrwać." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -348,9 +352,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -387,11 +393,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/pt/LC_MESSAGES/django.mo index efc7a19a4d..97f7e54a39 100644 Binary files a/mayan/apps/document_indexing/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/pt/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/pt/LC_MESSAGES/django.po index a88f2d4264..f15607ca3a 100644 --- a/mayan/apps/document_indexing/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/pt/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Renata Oliveira , 2011 @@ -10,54 +10,54 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:34+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: admin.py:24 msgid "None" msgstr "Nenhum" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "Nome" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "Slug" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "Itens" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "" @@ -65,12 +65,12 @@ msgstr "" msgid "Creation date" msgstr "" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Índices" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "" @@ -105,89 +105,93 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "Faz com que este índice seja visível e atualizado quando os dados do documento forem alterados." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"Faz com que este índice seja visível e atualizado quando os dados do " +"documento forem alterados." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." -msgstr "Faz com que este nó seja visível e atualizado quando os dados do documento forem alterados." +msgstr "" +"Faz com que este nó seja visível e atualizado quando os dados do documento " +"forem alterados." -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." -msgstr "Escolha esta opção para que este nó atue como contentor para documentos e não como pai de outros nós." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." +msgstr "" +"Escolha esta opção para que este nó atue como contentor para documentos e " +"não como pai de outros nós." -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Valor" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Documentos" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -215,74 +219,73 @@ msgstr "Ver índices de documento" msgid "Rebuild document indexes" msgstr "Reconstruir índices de documento" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." msgstr "Esta operação pode levar algum tempo em bases de dados grandes." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -347,9 +350,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -386,11 +391,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/pt_BR/LC_MESSAGES/django.mo index a2d7540553..fb4a94b7f9 100644 Binary files a/mayan/apps/document_indexing/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/pt_BR/LC_MESSAGES/django.po index 4de82a369c..d826b6b85e 100644 --- a/mayan/apps/document_indexing/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/pt_BR/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Aline Freitas , 2016 @@ -11,54 +11,54 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-11-17 23:07+0000\n" "Last-Translator: Aline Freitas \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-" +"edms/language/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: admin.py:24 msgid "None" msgstr "Nenhum" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "Tipos de Documentos" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "Indexação de documentos" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "Etiqueta" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "Identificador" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "Habilitado" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "Itens" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "Nível" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "Tem links de documentos?" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "Nó" @@ -66,12 +66,12 @@ msgstr "Nó" msgid "Creation date" msgstr "Data de criação" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Índices" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "Criar índice" @@ -104,91 +104,101 @@ msgstr "Novo node filho" msgid "" "Error indexing document: %(document)s; expression: %(expression)s; " "%(exception)s" -msgstr "Erro indexando documento: %(document)s; expressão: %(expression)s; %(exception)s" +msgstr "" +"Erro indexando documento: %(document)s; expressão: %(expression)s; " +"%(exception)s" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." -msgstr "Estes valores serão utilizados por outras aplicações para fazer referência a este índice." +msgstr "" +"Estes valores serão utilizados por outras aplicações para fazer referência a " +"este índice." -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "Faz com que este índice seja visível e atualizado quando dados de documentos forem alterados." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"Faz com que este índice seja visível e atualizado quando dados de documentos " +"forem alterados." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "Índice" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "Instância de índice" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "Instâncias de índice" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" -msgstr "Insira um modelo para renderizar. Use a linguagem de modelo padrão do Django (https://docs.djangoproject.com/pt-br/1.10/ref/templates/builtins/)" +msgstr "" +"Insira um modelo para renderizar. Use a linguagem de modelo padrão do Django " +"(https://docs.djangoproject.com/pt-br/1.10/ref/templates/builtins/)" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "Indexando expressão" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." -msgstr "Faz com que este nó seja visível e atualizado quando dados do documento forem alterados." +msgstr "" +"Faz com que este nó seja visível e atualizado quando dados do documento " +"forem alterados." -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." -msgstr "Marque esta opção para que este nó atue como um recipiente para documentos e não como um pai para outros nós secundários." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." +msgstr "" +"Marque esta opção para que este nó atue como um recipiente para documentos e " +"não como um pai para outros nós secundários." -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "Link de documentos" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "Raiz" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "Índice de modelo de nó" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "Indices de modelo de nó" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "Indice de modelo de índice" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Valor" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Documento" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "Índice de instância de nó" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "Índices instâncias de nó " -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "Instâncias do nó do índice de documentos" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "Instâncias de nós de lindice de instâncias" @@ -216,74 +226,74 @@ msgstr "Ver índices de documento" msgid "Rebuild document indexes" msgstr "Reconstruir índices de documento" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "Apagar o índice: %s?" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "Editar Indice: %s" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "Tipos de documentos disponíveis" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "Tipos de documentos vinculados" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "Tipos de documentos vinculados ao índice: %s" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "Nós de modelo da árvore do índice: %s" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "Criar nó filho de: %s" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "Excluir o nó de modelo de índice: %s?" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "Editar o nó de modelo de índice: %s?" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "Navegação: %s" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "Conteúdo para Indice? %s" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "Indexar nós contendo documento: %s" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." -msgstr "Em grandes bases de dados esta operação pode levar algum tempo para executar." +msgstr "" +"Em grandes bases de dados esta operação pode levar algum tempo para executar." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "Reconstruir todos os índices?" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "Índices em fila reconstruídos com sucesso." @@ -348,9 +358,11 @@ msgstr "Índices em fila reconstruídos com sucesso." #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -387,11 +399,11 @@ msgstr "Índices em fila reconstruídos com sucesso." #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/ro_RO/LC_MESSAGES/django.mo index 70c927f433..bc81810e36 100644 Binary files a/mayan/apps/document_indexing/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/ro_RO/LC_MESSAGES/django.po index 0d4f684543..ea7fa98cbb 100644 --- a/mayan/apps/document_indexing/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/ro_RO/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Badea Gabriel , 2013 @@ -9,54 +9,55 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:34+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-" +"edms/language/ro_RO/)\n" +"Language: ro_RO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ro_RO\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" #: admin.py:24 msgid "None" msgstr "Nici unul" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "Etichetă" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "Articole" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "" @@ -64,12 +65,12 @@ msgstr "" msgid "Creation date" msgstr "" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Indexuri" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "" @@ -104,89 +105,93 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "Cauză pentru acest index să fie vizibil și actualizat când documentul suferă schimbări." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"Cauză pentru acest index să fie vizibil și actualizat când documentul suferă " +"schimbări." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." -msgstr "Cauză pentru ca acest nod să fie vizibil și actualizat atunci când datele documentului se modifică." +msgstr "" +"Cauză pentru ca acest nod să fie vizibil și actualizat atunci când datele " +"documentului se modifică." -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." -msgstr "Bifați această opțiune pentru a avea acest nod ca un container pentru documente și nu ca un părinte pentru nodurile suplimentare." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." +msgstr "" +"Bifați această opțiune pentru a avea acest nod ca un container pentru " +"documente și nu ca un părinte pentru nodurile suplimentare." -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Valoare" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Documente" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -214,74 +219,74 @@ msgstr "Vezi indexul de documente" msgid "Rebuild document indexes" msgstr "Reconstruire index documente" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." -msgstr "Pe baze de date mari, această operație poate dura ceva timp pentru a executa." +msgstr "" +"Pe baze de date mari, această operație poate dura ceva timp pentru a executa." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -346,9 +351,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -385,11 +392,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/ru/LC_MESSAGES/django.mo index feeb6d23e4..b6dba86a58 100644 Binary files a/mayan/apps/document_indexing/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/ru/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/ru/LC_MESSAGES/django.po index a427ce095e..ca65b88d32 100644 --- a/mayan/apps/document_indexing/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/ru/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # lilo.panic, 2016 @@ -9,54 +9,56 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-11-02 04:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" #: admin.py:24 msgid "None" msgstr "Ни один" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "Типы документов" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "Индексирование документа" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "Надпись" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "Доступно" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "Элементы" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "Уровень" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "Узел" @@ -64,12 +66,12 @@ msgstr "Узел" msgid "Creation date" msgstr "Дата создания" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "Индексы" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "Создать индекс" @@ -104,89 +106,90 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." -msgstr "Этот индекс должен быть видимым и обновляться при изменении данных документа." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." +msgstr "" +"Этот индекс должен быть видимым и обновляться при изменении данных документа." -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "Индекс" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "Экземпляры индекса" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." -msgstr "Этот узел должен быть видимым и обновляются при изменении данных документа." +msgstr "" +"Этот узел должен быть видимым и обновляются при изменении данных документа." -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." -msgstr "Этот узел будет контейнером для документов и не будет иметь дочерних узлов." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." +msgstr "" +"Этот узел будет контейнером для документов и не будет иметь дочерних узлов." -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "Корень" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Значение" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Документы" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -214,74 +217,75 @@ msgstr "Просмотр индексов документа" msgid "Rebuild document indexes" msgstr "Восстановление индексов документа" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "Удалить индекс: %s?" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "Редактировать индекс: %s" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "Доступные типы документов" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "Типы документов связаны" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "Навигация: %s" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." -msgstr "В больших базах данных эта операция может занять некоторое время для выполнения." +msgstr "" +"В больших базах данных эта операция может занять некоторое время для " +"выполнения." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "Восстановить все индексы?" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "Восстановление индекса успешно отправлено в очередь." @@ -346,9 +350,11 @@ msgstr "Восстановление индекса успешно отправ #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -385,11 +391,11 @@ msgstr "Восстановление индекса успешно отправ #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/sl_SI/LC_MESSAGES/django.mo index 0b45da13cf..1504feaa74 100644 Binary files a/mayan/apps/document_indexing/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/sl_SI/LC_MESSAGES/django.po index 4ef9bb3d4a..144dc31f38 100644 --- a/mayan/apps/document_indexing/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/sl_SI/LC_MESSAGES/django.po @@ -1,61 +1,62 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-11-17 08:59+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-" +"edms/language/sl_SI/)\n" +"Language: sl_SI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: sl_SI\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" #: admin.py:24 msgid "None" msgstr "Brez" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "Oznaka" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "" @@ -63,12 +64,12 @@ msgstr "" msgid "Creation date" msgstr "" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "" @@ -103,89 +104,87 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." msgstr "" -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." msgstr "" -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." msgstr "" -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Dokumenti" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -213,74 +212,73 @@ msgstr "" msgid "Rebuild document indexes" msgstr "" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." msgstr "Če je baza velika lahko operacija zahteva nekaj več časa da se izvrši." -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -345,9 +343,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -384,11 +384,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/vi_VN/LC_MESSAGES/django.mo index 3b12687e1b..46cd081898 100644 Binary files a/mayan/apps/document_indexing/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/vi_VN/LC_MESSAGES/django.po index d45f72629c..c16002bba6 100644 --- a/mayan/apps/document_indexing/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/vi_VN/LC_MESSAGES/django.po @@ -1,61 +1,61 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:33+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/" +"mayan-edms/language/vi_VN/)\n" +"Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: admin.py:24 msgid "None" msgstr "None" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "" @@ -63,12 +63,12 @@ msgstr "" msgid "Creation date" msgstr "" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "" @@ -103,89 +103,87 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." msgstr "" -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." msgstr "" -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." msgstr "" -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "Giá trị" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "Tài liệu" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -213,74 +211,73 @@ msgstr "" msgid "Rebuild document indexes" msgstr "" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." msgstr "" -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -345,9 +342,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -384,11 +383,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/document_indexing/locale/zh_CN/LC_MESSAGES/django.mo index 49ce22f6f9..9c8f71c326 100644 Binary files a/mayan/apps/document_indexing/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/document_indexing/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_indexing/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/document_indexing/locale/zh_CN/LC_MESSAGES/django.po index 14e3e06cb6..8a0e4814f9 100644 --- a/mayan/apps/document_indexing/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/document_indexing/locale/zh_CN/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Ford Guo , 2014 @@ -9,54 +9,54 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-10-28 07:33+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" +"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/" +"language/zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: admin.py:24 msgid "None" msgstr "无" -#: admin.py:26 apps.py:139 links.py:48 models.py:41 +#: admin.py:26 apps.py:99 links.py:48 models.py:39 msgid "Document types" msgstr "" #: apps.py:49 -#| msgid "document indexes" msgid "Document indexing" msgstr "" -#: apps.py:125 models.py:25 +#: apps.py:85 models.py:23 msgid "Label" msgstr "" -#: apps.py:126 models.py:30 +#: apps.py:86 models.py:28 msgid "Slug" msgstr "" -#: apps.py:128 apps.py:148 models.py:38 models.py:126 +#: apps.py:88 apps.py:108 models.py:36 models.py:124 msgid "Enabled" msgstr "" -#: apps.py:133 apps.py:163 apps.py:176 +#: apps.py:93 apps.py:123 apps.py:136 msgid "Items" msgstr "" -#: apps.py:144 +#: apps.py:104 msgid "Level" msgstr "" -#: apps.py:152 +#: apps.py:112 msgid "Has document links?" msgstr "" -#: apps.py:159 apps.py:170 +#: apps.py:119 apps.py:130 msgid "Node" msgstr "" @@ -64,12 +64,12 @@ msgstr "" msgid "Creation date" msgstr "" -#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:83 views.py:75 -#: views.py:235 +#: links.py:18 links.py:22 links.py:25 links.py:28 models.py:81 views.py:73 +#: views.py:220 msgid "Indexes" msgstr "索引" -#: links.py:31 views.py:36 +#: links.py:31 views.py:34 msgid "Create index" msgstr "" @@ -104,89 +104,87 @@ msgid "" "%(exception)s" msgstr "" -#: models.py:29 -#| msgid "Internal name used to reference this index." +#: models.py:27 msgid "This values will be used by other apps to reference this index." msgstr "" -#: models.py:35 -msgid "" -"Causes this index to be visible and updated when document data changes." +#: models.py:33 +msgid "Causes this index to be visible and updated when document data changes." msgstr "当文档数据变化时,将导致索引被更新和可见。" -#: models.py:82 models.py:109 +#: models.py:80 models.py:107 msgid "Index" msgstr "" -#: models.py:101 +#: models.py:99 msgid "Index instance" msgstr "index instance" -#: models.py:102 +#: models.py:100 msgid "Index instances" msgstr "" -#: models.py:114 +#: models.py:112 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/)" msgstr "" -#: models.py:118 +#: models.py:116 msgid "Indexing expression" msgstr "" -#: models.py:123 +#: models.py:121 msgid "Causes this node to be visible and updated when document data changes." msgstr "当文档数据变化时,导致节点被更新和可见。" -#: models.py:131 +#: models.py:129 msgid "" -"Check this option to have this node act as a container for documents and not" -" as a parent for further nodes." +"Check this option to have this node act as a container for documents and not " +"as a parent for further nodes." msgstr "检查当前节点是否为文档容器,而不是作为别处节点的父节点。" -#: models.py:134 +#: models.py:132 msgid "Link documents" msgstr "" -#: models.py:139 +#: models.py:137 msgid "Root" msgstr "" -#: models.py:144 +#: models.py:142 msgid "Index node template" msgstr "" -#: models.py:145 +#: models.py:143 msgid "Indexes node template" msgstr "" -#: models.py:153 +#: models.py:151 msgid "Index template node" msgstr "" -#: models.py:156 +#: models.py:154 msgid "Value" msgstr "值" -#: models.py:159 +#: models.py:157 msgid "Documents" msgstr "文档" -#: models.py:204 +#: models.py:197 msgid "Index node instance" msgstr "" -#: models.py:205 +#: models.py:198 msgid "Indexes node instances" msgstr "" -#: models.py:213 +#: models.py:206 msgid "Document index node instance" msgstr "" -#: models.py:214 +#: models.py:207 msgid "Document indexes node instances" msgstr "" @@ -214,74 +212,73 @@ msgstr "查看文档索引" msgid "Rebuild document indexes" msgstr "重建文档索引" -#: views.py:51 +#: views.py:49 #, python-format -#| msgid "Delete document indexes" msgid "Delete the index: %s?" msgstr "" -#: views.py:64 +#: views.py:62 #, python-format msgid "Edit index: %s" msgstr "" -#: views.py:81 +#: views.py:79 msgid "Available document types" msgstr "" -#: views.py:83 +#: views.py:81 msgid "Document types linked" msgstr "" -#: views.py:106 +#: views.py:96 #, python-format msgid "Document types linked to index: %s" msgstr "" -#: views.py:145 +#: views.py:135 #, python-format msgid "Tree template nodes for index: %s" msgstr "" -#: views.py:172 +#: views.py:157 #, python-format msgid "Create child node of: %s" msgstr "" -#: views.py:196 +#: views.py:181 #, python-format msgid "Delete the index template node: %s?" msgstr "" -#: views.py:218 +#: views.py:203 #, python-format msgid "Edit the index template node: %s?" msgstr "" -#: views.py:286 +#: views.py:266 #, python-format msgid "Navigation: %s" msgstr "" -#: views.py:291 +#: views.py:271 #, python-format msgid "Contents for index: %s" msgstr "" -#: views.py:331 +#: views.py:307 #, python-format msgid "Indexes nodes containing document: %s" msgstr "" -#: views.py:341 +#: views.py:317 msgid "On large databases this operation may take some time to execute." msgstr "在大数据库中,此操作将比较耗时。" -#: views.py:342 +#: views.py:318 msgid "Rebuild all indexes?" msgstr "" -#: views.py:351 +#: views.py:327 msgid "Index rebuild queued successfully." msgstr "" @@ -346,9 +343,11 @@ msgstr "" #~ msgstr "Maximum suffix (%s) count reached." #~ msgid "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgstr "" -#~ "Error in document indexing update expression: %(expression)s; %(exception)s" +#~ "Error in document indexing update expression: %(expression)s; " +#~ "%(exception)s" #~ msgid "Unable to delete document indexing node; %s" #~ msgstr "Unable to delete document indexing node; %s" @@ -385,11 +384,11 @@ msgstr "" #~ msgstr "documents rename count" #~ msgid "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgstr "" -#~ "A dictionary that maps the index name and where on the filesystem that index" -#~ " will be mirrored." +#~ "A dictionary that maps the index name and where on the filesystem that " +#~ "index will be mirrored." #~ msgid "Index rebuild error: %s" #~ msgstr "Index rebuild error: %s" diff --git a/mayan/apps/document_indexing/models.py b/mayan/apps/document_indexing/models.py index e3499c718a..a276a8113a 100644 --- a/mayan/apps/document_indexing/models.py +++ b/mayan/apps/document_indexing/models.py @@ -19,6 +19,10 @@ from .managers import ( @python_2_unicode_compatible class Index(models.Model): + """ + Parent model that defines an index and hold all the relationship for its + template and instance when resolved. + """ label = models.CharField( max_length=128, unique=True, verbose_name=_('Label') ) @@ -65,7 +69,6 @@ class Index(models.Model): """ Automatically create the root index template node """ - super(Index, self).save(*args, **kwargs) IndexTemplateNode.objects.get_or_create(parent=None, index=self) @@ -102,6 +105,11 @@ class IndexInstance(Index): @python_2_unicode_compatible class IndexTemplateNode(MPTTModel): + """ + The template to generate an index. Each entry represents a level in a + hierarchy of levels. Each level can contain further levels or a list of + documents but not both. + """ parent = TreeForeignKey('self', blank=True, null=True) index = models.ForeignKey( Index, related_name='node_templates', verbose_name=_('Index') diff --git a/mayan/apps/document_indexing/urls.py b/mayan/apps/document_indexing/urls.py index bdf0a432cc..e2b81beebd 100644 --- a/mayan/apps/document_indexing/urls.py +++ b/mayan/apps/document_indexing/urls.py @@ -72,12 +72,12 @@ urlpatterns = [ api_urls = [ url( - r'^index/node/(?P[0-9]+)/documents/$', + r'^indexes/node/(?P[0-9]+)/documents/$', APIIndexNodeInstanceDocumentListView.as_view(), name='index-node-documents' ), url( - r'^index/template/(?P[0-9]+)/$', APIIndexTemplateView.as_view(), + r'^indexes/template/(?P[0-9]+)/$', APIIndexTemplateView.as_view(), name='index-template-detail' ), url( @@ -85,12 +85,12 @@ api_urls = [ name='index-detail' ), url( - r'^index/(?P[0-9]+)/template/$', + r'^indexes/(?P[0-9]+)/template/$', APIIndexTemplateListView.as_view(), name='index-template-detail' ), url(r'^indexes/$', APIIndexListView.as_view(), name='index-list'), url( - r'^document/(?P[0-9]+)/indexes/$', + r'^documents/(?P[0-9]+)/indexes/$', APIDocumentIndexListView.as_view(), name='document-index-list' ), ] diff --git a/mayan/apps/document_signatures/apps.py b/mayan/apps/document_signatures/apps.py index eecfad9102..b5901b8bb4 100644 --- a/mayan/apps/document_signatures/apps.py +++ b/mayan/apps/document_signatures/apps.py @@ -46,8 +46,8 @@ logger = logging.getLogger(__name__) class DocumentSignaturesApp(MayanAppConfig): app_namespace = 'signatures' app_url = 'signatures' + has_tests = True name = 'document_signatures' - test = True verbose_name = _('Document signatures') def ready(self): diff --git a/mayan/apps/document_signatures/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/ar/LC_MESSAGES/django.mo index 1b1733fe7b..12fe9771d9 100644 Binary files a/mayan/apps/document_signatures/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/ar/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/ar/LC_MESSAGES/django.po index 372cfc4df4..8ccf5bf345 100644 --- a/mayan/apps/document_signatures/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/ar/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Mohammed ALDOUB , 2013 @@ -9,15 +9,17 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/" +"ar/)\n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" #: apps.py:51 permissions.py:8 settings.py:7 msgid "Document signatures" @@ -28,16 +30,14 @@ msgid "Date" msgstr "Date" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "Key ID" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "لا شيء" @@ -45,64 +45,59 @@ msgstr "لا شيء" msgid "Type" msgstr "" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -203,12 +198,10 @@ msgid "Delete detached signatures" msgstr "" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -217,63 +210,60 @@ msgid "Verify document signatures" msgstr "Verify document signatures" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." msgstr "On large databases this operation may take some time to execute." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/bg/LC_MESSAGES/django.mo index a3d59316cc..092e191cf8 100644 Binary files a/mayan/apps/document_signatures/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/bg/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/bg/LC_MESSAGES/django.po index b0a31d6e7a..6f43280888 100644 --- a/mayan/apps/document_signatures/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/bg/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Pavlin Koldamov , 2012 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" +"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -28,16 +29,14 @@ msgid "Date" msgstr "Дата" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "Ключ ID" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Няма" @@ -45,64 +44,59 @@ msgstr "Няма" msgid "Type" msgstr "" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -203,12 +197,10 @@ msgid "Delete detached signatures" msgstr "Изтриване на несвързани сигнатури" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -217,63 +209,62 @@ msgid "Verify document signatures" msgstr "Проверете сигнатурите на документа" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." -msgstr "При големи бази данни тази операция може да отнеме известно време за изпълнение." +msgstr "" +"При големи бази данни тази операция може да отнеме известно време за " +"изпълнение." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/bs_BA/LC_MESSAGES/django.mo index 270f10e31d..67eeb76b80 100644 Binary files a/mayan/apps/document_signatures/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/bs_BA/LC_MESSAGES/django.po index 1b58bda6c4..860bd6b8fc 100644 --- a/mayan/apps/document_signatures/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/bs_BA/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # www.ping.ba , 2013 @@ -9,15 +9,17 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" +"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/" +"rosarior/mayan-edms/language/bs_BA/)\n" +"Language: bs_BA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bs_BA\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" +"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" #: apps.py:51 permissions.py:8 settings.py:7 msgid "Document signatures" @@ -28,16 +30,14 @@ msgid "Date" msgstr "Datum" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "ID ključa" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Nijedno" @@ -45,64 +45,59 @@ msgstr "Nijedno" msgid "Type" msgstr "" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -203,12 +198,10 @@ msgid "Delete detached signatures" msgstr "" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -217,63 +210,60 @@ msgid "Verify document signatures" msgstr "Provjeriti potpise dokumenta" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." msgstr "Na velikim bazama podataka ove operacije mogu potrajati neko vrijeme." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/da/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/da/LC_MESSAGES/django.mo index 9a860e1962..63631bb5e8 100644 Binary files a/mayan/apps/document_signatures/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/da/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/da/LC_MESSAGES/django.po index 2bb0e24574..aedc936492 100644 --- a/mayan/apps/document_signatures/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/da/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" +"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/" +"da/)\n" +"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -27,16 +28,14 @@ msgid "Date" msgstr "Dato" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Ingen" @@ -44,64 +43,59 @@ msgstr "Ingen" msgid "Type" msgstr "" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -202,12 +196,10 @@ msgid "Delete detached signatures" msgstr "" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -216,63 +208,60 @@ msgid "Verify document signatures" msgstr "" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." msgstr "På store databaser kan denne operation tage lidt tid at udføre." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/de_DE/LC_MESSAGES/django.mo index 4eb6b4ed82..9201966fb4 100644 Binary files a/mayan/apps/document_signatures/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/de_DE/LC_MESSAGES/django.po index 337be4e52f..886ef0edde 100644 --- a/mayan/apps/document_signatures/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/de_DE/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Berny , 2015 @@ -13,14 +13,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-05-20 22:09+0000\n" "Last-Translator: Tobias Paepke \n" -"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" +"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -32,16 +33,14 @@ msgid "Date" msgstr "Datum" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "Schlüssel-ID" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "Unterschrifts-ID" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Nichts" @@ -49,64 +48,59 @@ msgstr "Nichts" msgid "Type" msgstr "Typ" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "Schlüssel" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "Passphrase" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "Eingebettete Unterschrift?" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "Datum der Unterschrift" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "Unterschrifts-Schlüssel-ID" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "Unterschrifts-Schlüssel vorhanden?" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "Schlüssel-Fingerabdruck" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "Erstellungsdatum des Schlüssels" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "Ablaufdatum des Schlüssels" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "Schlüssellänge" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "Schlüssel-Verfahren" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "Schlüssel-Benutzer-ID" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "Schlüssel-Typ" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "Alle Dokumente überprüfen" @@ -207,12 +201,10 @@ msgid "Delete detached signatures" msgstr "Separate Unterschriften löschen" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "Separate Unterschriften der Dokumente herunterladen" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "Separate Unterschriften der Dokumente hochladen" @@ -221,63 +213,61 @@ msgid "Verify document signatures" msgstr "Dokumentenunterschriften überprüfen" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "Details der Unterschriften des Dokuments" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "Passphrase wird benötigt um den Schlüssel zu entsperren" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "Passphrase ist ungültig" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "Dokumentenversion wurde erfolgreich signiert." -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "Dokumentenversion \"%s\" mit seperater Unterschrift signieren" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "Dokumentenversion \"%s\" mit eingebetteter Unterschrift signieren" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "Separate Unterschrift löschen: %s" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "Details für Signatur: %s" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "Unterschriften für Dokumentenversion: %s" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "Seperate Unterschrift für Dokumentenversion hochladen: %s" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." -msgstr "Bei großen Datenbanken kann dieser Vorgang einige Zeit in Anspruch nehmen." +msgstr "" +"Bei großen Datenbanken kann dieser Vorgang einige Zeit in Anspruch nehmen." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "Alle Unterschriften der Dokumente überprüfen?" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "Überprüfung der Unterschriften erfolgreich eingereiht." diff --git a/mayan/apps/document_signatures/locale/en/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/en/LC_MESSAGES/django.mo index 76295457a5..cef9d66fad 100644 Binary files a/mayan/apps/document_signatures/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/en/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/en/LC_MESSAGES/django.po index 9905a89654..9b6d276a88 100644 --- a/mayan/apps/document_signatures/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2012-12-12 06:05+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -32,13 +32,13 @@ msgstr "" msgid "Key ID" msgstr "Key ID: %s" -#: apps.py:98 forms.py:71 models.py:41 +#: apps.py:98 forms.py:64 models.py:41 #, fuzzy #| msgid "Signature ID: %s" msgid "Signature ID" msgstr "Signature ID: %s" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "" @@ -46,63 +46,63 @@ msgstr "" msgid "Type" msgstr "" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 +#: forms.py:46 #, fuzzy #| msgid "Signature file" msgid "Signature is embedded?" msgstr "Signature file" -#: forms.py:55 +#: forms.py:48 #, fuzzy #| msgid "Signature file" msgid "Signature date" msgstr "Signature file" -#: forms.py:58 +#: forms.py:51 #, fuzzy #| msgid "Signature ID: %s" msgid "Signature key ID" msgstr "Signature ID: %s" -#: forms.py:60 +#: forms.py:53 #, fuzzy #| msgid "Signature type: %s" msgid "Signature key present?" msgstr "Signature type: %s" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" @@ -250,61 +250,61 @@ msgstr "Verify document signatures" msgid "View details of document signatures" msgstr "Verify document signatures" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 #, fuzzy msgid "Document version signed successfully." msgstr "document version signatures" -#: views.py:129 +#: views.py:117 #, fuzzy, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "document version signature" -#: views.py:240 +#: views.py:218 #, fuzzy, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "document version signature" -#: views.py:267 +#: views.py:245 #, fuzzy, python-format msgid "Delete detached signature: %s" msgstr "Download detached signatures" -#: views.py:292 +#: views.py:270 #, fuzzy, python-format #| msgid "Document signatures" msgid "Details for signature: %s" msgstr "Document signatures" -#: views.py:339 +#: views.py:312 #, fuzzy, python-format msgid "Signatures for document version: %s" msgstr "signature properties for: %s" -#: views.py:375 +#: views.py:343 #, fuzzy, python-format msgid "Upload detached signature for document version: %s" msgstr "Upload detached signature for: %s" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." msgstr "" -#: views.py:393 +#: views.py:361 #, fuzzy #| msgid "Verify document signatures" msgid "Verify all document for signatures?" msgstr "Verify document signatures" -#: views.py:403 +#: views.py:371 #, fuzzy msgid "Signature verification queued successfully." msgstr "Detached signature uploaded successfully." diff --git a/mayan/apps/document_signatures/locale/es/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/es/LC_MESSAGES/django.mo index 966a6c96d7..095eb6cfb4 100644 Binary files a/mayan/apps/document_signatures/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/es/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/es/LC_MESSAGES/django.po index 3cc61a9523..a808d3edb2 100644 --- a/mayan/apps/document_signatures/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/es/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # jmcainzos , 2014 @@ -12,14 +12,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-11-23 06:48+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -31,16 +32,14 @@ msgid "Date" msgstr "Fecha" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "Identificador de clave" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "ID de firma" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Ninguno" @@ -48,64 +47,59 @@ msgstr "Ninguno" msgid "Type" msgstr "Tipo" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "Llave" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "Contraseña" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "¿Firma integrada?" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "Fecha de la firma" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "ID de llave de firma" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "¿Llave de la firma presente?" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "Huella de la llave" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "Fecha de creación de la llave" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "Fecha de expiración de la llave" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "Tamaño de la llave" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "Algoritmo de la llave" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "ID de usuario de la llave" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "Tipo de llave" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "Verificar todos los documents" @@ -206,12 +200,10 @@ msgid "Delete detached signatures" msgstr "Borrar firmas separadas" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "Descargar firma aparte de documentos" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "Subir firmas aparte de documentos" @@ -220,63 +212,62 @@ msgid "Verify document signatures" msgstr "Verificar firmas de documentos" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "Ver detalles de firma de documentos" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "Se necesita contraseña para acceder a esta llave." -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "Contraseña incorrecta." -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "Versión de documento firmada con éxito." -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "Firmar versión de documento \"%s\" con una firma aparte " -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "Firmar versión de documento \"%s\" con una firma integrada" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "Borrar firma aparte: %s" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "Detalles para la firma: %s" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "Firmas para la versión de documento: %s" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "Subir firma aparte para la versión de documento: %s" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." -msgstr "En bases de datos de gran tamaño esta operación puede tardar algún tiempo en ejecutarse." +msgstr "" +"En bases de datos de gran tamaño esta operación puede tardar algún tiempo en " +"ejecutarse." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "¿Verificar todos los documentos para firmas?" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "Verificación de firmas colocada en la cola." diff --git a/mayan/apps/document_signatures/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/fa/LC_MESSAGES/django.mo index 5339cabc60..412b9d44f4 100644 Binary files a/mayan/apps/document_signatures/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/fa/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/fa/LC_MESSAGES/django.po index fc81baf490..425b9c09b4 100644 --- a/mayan/apps/document_signatures/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/fa/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/" +"language/fa/)\n" +"Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -27,16 +28,14 @@ msgid "Date" msgstr "تاریخ" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "شناسه کلید" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "هیچ" @@ -44,64 +43,59 @@ msgstr "هیچ" msgid "Type" msgstr "نوع" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -202,12 +196,10 @@ msgid "Delete detached signatures" msgstr "حذف امضاهای جدا شده" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -216,63 +208,60 @@ msgid "Verify document signatures" msgstr "بررسی امضای سند" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." msgstr "در پایگاه داده بزرگ این عملیات مدت زیادی بطول خواهد انجامید." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/fr/LC_MESSAGES/django.mo index d78dac99aa..9fcd59dc04 100644 Binary files a/mayan/apps/document_signatures/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/fr/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/fr/LC_MESSAGES/django.po index f575ff469c..96a64b0e3c 100644 --- a/mayan/apps/document_signatures/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/fr/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Bruno CAPELETO , 2016 @@ -12,14 +12,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-05-23 19:54+0000\n" "Last-Translator: Bruno CAPELETO \n" -"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" +"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/" +"fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -31,16 +32,14 @@ msgid "Date" msgstr "Date" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "ID de la clé" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "ID de la signature" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Aucune" @@ -48,64 +47,59 @@ msgstr "Aucune" msgid "Type" msgstr "Type" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "Clé" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "Phrase secrète" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "La signature est-elle intégrée?" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "Date de la signature" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "Identifiant de la clef de signature" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "Clé de signature présente?" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "Emprunte de la clef" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "Date de création de la clé" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "Date d'expiration de la clé" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "Longueur de la clé" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "Algorithme de la clé" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "Clé de l'ID utilisateur" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "Type de clé" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "Vérifier tous les documents" @@ -206,12 +200,10 @@ msgid "Delete detached signatures" msgstr "Suppression des signatures détachées" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "Télécharger les signatures externes du document" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "Transmettre les signatures externes du document" @@ -220,63 +212,62 @@ msgid "Verify document signatures" msgstr "Vérifier les signatures du document" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "Voir le détails des signatures du document" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "Une phrase secrète est nécessaire pour déverrouiller cette clé" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "Phrase secrète incorrecte" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "Signature de la version du document réussie." -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "Signer la version \"%s\" du document avec une signature externe" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "Signer la version \"%s\" du document avec une signature intégrée" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "Supprimer la signature détachée: %s" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "Détails de la signature: %s" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "Signatures pour cette version du document: %s" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "Transférer une signature détachée pour la version du document: %s" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." -msgstr "Sur de grosses bases de données, cette opération peut prendre un certain temps." +msgstr "" +"Sur de grosses bases de données, cette opération peut prendre un certain " +"temps." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "Vérifier la signature des documents?" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "Vérification de la signature ajoutée à la file d'attente" diff --git a/mayan/apps/document_signatures/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/hu/LC_MESSAGES/django.mo index 41a1aa6146..b4d895bdd5 100644 Binary files a/mayan/apps/document_signatures/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/hu/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/hu/LC_MESSAGES/django.po index 0180d893cc..c2050f4c2b 100644 --- a/mayan/apps/document_signatures/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/hu/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" +"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/hu/)\n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -27,16 +28,14 @@ msgid "Date" msgstr "" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Semmi" @@ -44,64 +43,59 @@ msgstr "Semmi" msgid "Type" msgstr "" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -202,12 +196,10 @@ msgid "Delete detached signatures" msgstr "" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -216,63 +208,60 @@ msgid "Verify document signatures" msgstr "" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." msgstr "A nagy adatbázisok esetében a művelet sokáig is tarthat." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/id/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/id/LC_MESSAGES/django.mo index 3667e8c279..ecd01dce52 100644 Binary files a/mayan/apps/document_signatures/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/id/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/id/LC_MESSAGES/django.po index d5e39cb143..cd9e5159e2 100644 --- a/mayan/apps/document_signatures/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/id/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" +"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/" +"language/id/)\n" +"Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -27,16 +28,14 @@ msgid "Date" msgstr "" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "" @@ -44,64 +43,59 @@ msgstr "" msgid "Type" msgstr "" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -202,12 +196,10 @@ msgid "Delete detached signatures" msgstr "" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -216,63 +208,62 @@ msgid "Verify document signatures" msgstr "" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." -msgstr "Pada database yang besar pekerjaan berikut mungkin akan membutuhkan waktu untuk dilaksanakan." +msgstr "" +"Pada database yang besar pekerjaan berikut mungkin akan membutuhkan waktu " +"untuk dilaksanakan." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/it/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/it/LC_MESSAGES/django.mo index 58b430eeda..551e05c4c6 100644 Binary files a/mayan/apps/document_signatures/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/it/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/it/LC_MESSAGES/django.po index c7f2f178eb..285314577b 100644 --- a/mayan/apps/document_signatures/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/it/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Carlo Zanatto <>, 2012 @@ -11,14 +11,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-09-24 13:19+0000\n" "Last-Translator: Marco Camplese \n" -"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" +"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -30,16 +31,14 @@ msgid "Date" msgstr "Data" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "ID Chiave" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "ID Firma" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Nessuno" @@ -47,64 +46,59 @@ msgstr "Nessuno" msgid "Type" msgstr "Tipo" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "Chiave" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "Passphrase" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "La firma è integrata?" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "Data firma" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "ID chiave di firma" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "La chiave di firma è presente?" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "Impronta della chiave" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "Data di creazione chiave" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "Data scadenza chiave" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "Lunghezza chiave" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "Algoritmo chiave" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "ID chiave utente" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "Tipo chiave" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "Verifica tutti i documenti" @@ -205,12 +199,10 @@ msgid "Delete detached signatures" msgstr "Elimina firme allegate" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "Scarica firme scollegate documenti" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "Carica firme scollegate documenti" @@ -219,63 +211,62 @@ msgid "Verify document signatures" msgstr "Verifica la firma del documento" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "Vedi dettagli delle firme documento" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "è richiesta la passphrase per sbloccare questa chiave." -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "La passphrase non è corretta." -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "La versione del documento è stata firmata con successo." -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "Firma la versione del documento \"%s\" con firma allegata" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "Firma la versione del documento \"%s\" con la firma integrata" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "Cancella la firma allegata: %s" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "Dettagli per la firma: %s" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "Firme per la versione del documento: %s" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "Carica la firma scollegata per la versione documento: %s" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." -msgstr "Per un database di grosse dimensioni l'operazione protrebbe aver bisogno di tempo." +msgstr "" +"Per un database di grosse dimensioni l'operazione protrebbe aver bisogno di " +"tempo." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "Verificare le firme per tutti i documenti?" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "Verifica firme messo in coda con successo." diff --git a/mayan/apps/document_signatures/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/nl_NL/LC_MESSAGES/django.mo index c3ff84a49d..ae72f20f8f 100644 Binary files a/mayan/apps/document_signatures/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/nl_NL/LC_MESSAGES/django.po index 066f1c5c20..87bfaa9013 100644 --- a/mayan/apps/document_signatures/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/nl_NL/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Evelijn Saaltink , 2016 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-11-09 16:39+0000\n" "Last-Translator: Evelijn Saaltink \n" -"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-" +"edms/language/nl_NL/)\n" +"Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -28,16 +29,14 @@ msgid "Date" msgstr "Datum" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "Sleutel-ID" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "Handtekening-ID" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Geen" @@ -45,64 +44,59 @@ msgstr "Geen" msgid "Type" msgstr "Type" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "Sleutel" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "Datum van handtekening" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "Handtekening sleutel-ID" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "Sleutelverloopdatu" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "Sleutellengte" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "Sleutelsoort" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "Verifieer alle documenten" @@ -203,12 +197,10 @@ msgid "Delete detached signatures" msgstr "" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -217,63 +209,60 @@ msgid "Verify document signatures" msgstr "" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." msgstr "Voor een grote database kan deze operatie lang duren." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/pl/LC_MESSAGES/django.mo index 9097a5b7f7..d819f89d0b 100644 Binary files a/mayan/apps/document_signatures/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/pl/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/pl/LC_MESSAGES/django.po index d6762f34f8..9d91b7c39a 100644 --- a/mayan/apps/document_signatures/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/pl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # mic , 2012 @@ -9,15 +9,17 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" +"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/" +"pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" #: apps.py:51 permissions.py:8 settings.py:7 msgid "Document signatures" @@ -28,16 +30,14 @@ msgid "Date" msgstr "Data" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "Key ID" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Brak" @@ -45,64 +45,59 @@ msgstr "Brak" msgid "Type" msgstr "Typ" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -203,12 +198,10 @@ msgid "Delete detached signatures" msgstr "" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -217,63 +210,60 @@ msgid "Verify document signatures" msgstr "Verify document signatures" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." msgstr "Na dużych bazach danych operacja może chwilę potrwać." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/pt/LC_MESSAGES/django.mo index e95fd25660..4d68067db4 100644 Binary files a/mayan/apps/document_signatures/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/pt/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/pt/LC_MESSAGES/django.po index 60ae06c37e..a6808e84e1 100644 --- a/mayan/apps/document_signatures/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/pt/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Vítor Figueiró , 2012 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -28,16 +29,14 @@ msgid "Date" msgstr "Data" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "ID da chave" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Nenhum" @@ -45,64 +44,59 @@ msgstr "Nenhum" msgid "Type" msgstr "" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -203,12 +197,10 @@ msgid "Delete detached signatures" msgstr "" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -217,63 +209,60 @@ msgid "Verify document signatures" msgstr "Verificar as assinaturas do documento" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." msgstr "Esta operação pode levar algum tempo em bases de dados grandes." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/pt_BR/LC_MESSAGES/django.mo index 87da528bb5..1a177b3206 100644 Binary files a/mayan/apps/document_signatures/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/pt_BR/LC_MESSAGES/django.po index c0e3f7f3b5..35c0667089 100644 --- a/mayan/apps/document_signatures/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/pt_BR/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Aline Freitas , 2016 @@ -10,14 +10,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-11-17 22:53+0000\n" "Last-Translator: Aline Freitas \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-" +"edms/language/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -29,16 +30,14 @@ msgid "Date" msgstr "Data" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "ID da chave" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "ID da assinatura" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Nenhum" @@ -46,64 +45,59 @@ msgstr "Nenhum" msgid "Type" msgstr "Tipo" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "Chave" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "Senha" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "Assinatura integrada?" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "Data da assinatura" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "ID da chave da assinatura" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "Chave da assinatura presente?" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "Impressão digital da chave" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "Data de criação da chave" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "Data de expiração da chave" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "Tamanho da chave" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "Algoritmo da chave" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "ID de usuário da chave" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "Tipo de chave" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "Verificar todos os documentos" @@ -204,12 +198,10 @@ msgid "Delete detached signatures" msgstr "Excluir assinaturas desanexados" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "Baixar assinatura destacada de documentos" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "Carregar assinaturas destacadas de documentos" @@ -218,63 +210,61 @@ msgid "Verify document signatures" msgstr "Verificar as assinaturas de documentos" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "Ver detalhes da assinatura de documentos" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "É preciso senha para acessar a chave." -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "Senha incorreta." -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "A versão do documento foi assinada com sucesso." -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "Assinar a versão do documento \"%s\" com uma assinatura destacada" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "Assinar uma versão do documento \"%s\" com uma assinatura integrada" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "Excluir assinatura destacada: %s" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "Detalhes para a assinatura: %s" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "Assinaturas para a versão do documento: %s" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "Carregar a assinatura destacada para a versão do documento: %s" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." -msgstr "Em grandes bases de dados esta operação pode levar algum tempo para executar." +msgstr "" +"Em grandes bases de dados esta operação pode levar algum tempo para executar." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "Verificar todos os documentos para assinaturas?" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "Verificação de assinaturas colocada em fila." diff --git a/mayan/apps/document_signatures/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/ro_RO/LC_MESSAGES/django.mo index 97d263275e..13dbeaf3a2 100644 Binary files a/mayan/apps/document_signatures/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/ro_RO/LC_MESSAGES/django.po index b02cd1679c..968e447f5d 100644 --- a/mayan/apps/document_signatures/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/ro_RO/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Badea Gabriel , 2013 @@ -9,15 +9,17 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-" +"edms/language/ro_RO/)\n" +"Language: ro_RO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ro_RO\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" #: apps.py:51 permissions.py:8 settings.py:7 msgid "Document signatures" @@ -28,16 +30,14 @@ msgid "Date" msgstr "Data" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "ID cheie" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Nici unul" @@ -45,64 +45,59 @@ msgstr "Nici unul" msgid "Type" msgstr "Tip" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -203,12 +198,10 @@ msgid "Delete detached signatures" msgstr "" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -217,63 +210,61 @@ msgid "Verify document signatures" msgstr "Verifica semnăturile de documente" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." -msgstr "Pe baze de date mari, această operație poate dura ceva timp pentru a executa." +msgstr "" +"Pe baze de date mari, această operație poate dura ceva timp pentru a executa." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/ru/LC_MESSAGES/django.mo index f66faf89e3..b7ecd279f0 100644 Binary files a/mayan/apps/document_signatures/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/ru/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/ru/LC_MESSAGES/django.po index 5a32610ce7..26eb600643 100644 --- a/mayan/apps/document_signatures/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/ru/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # lilo.panic, 2016 @@ -10,15 +10,18 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-07-19 20:01+0000\n" "Last-Translator: lilo.panic\n" -"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" #: apps.py:51 permissions.py:8 settings.py:7 msgid "Document signatures" @@ -29,16 +32,14 @@ msgid "Date" msgstr "Дата" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "ID ключа" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "ID подписи" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Ни один" @@ -46,64 +47,59 @@ msgstr "Ни один" msgid "Type" msgstr "Тип" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "Ключ" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "Кодовая фраза" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "Подпись встроена?" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "Дата подписи" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "ID ключа подписи" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "Ключ подписи предоставлен?" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "Отпечаток ключа" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "Дата создания ключа" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "Дата устаревания ключа" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "Длина ключа" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "Алгоритм ключа" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "ID пользователя ключа" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "Тип ключа" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "Проверить все документы" @@ -204,12 +200,10 @@ msgid "Delete detached signatures" msgstr "Удаление отделенных подписей" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "Скачать отделенные подписи документов" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "Вгрузить отделенные подписи документов" @@ -218,63 +212,62 @@ msgid "Verify document signatures" msgstr "Проверить подпись документа" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "Посмотреть подробности подписей документов" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "Для разблокироваки этого ключа необходима кодовая фраза" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "Кодовая фраза неверна." -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "Версия документа успешно подписана." -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "Подписать версию документа \"%s\" отделённой подписью" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "Подписать версию документа \"%s\" встроенной подписью" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "Удалить отделённую подпись: %s" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "Подробности для подписи: %s" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "Подписи для документа версии: %s" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "Выгрузить отделённую подпись для версии документа: %s" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." -msgstr "В больших базах данных эта операция может занять некоторое время для выполнения." +msgstr "" +"В больших базах данных эта операция может занять некоторое время для " +"выполнения." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "Проверить подписи во всех документах?" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "Верификация сигнатуры добавлена в очередь." diff --git a/mayan/apps/document_signatures/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/sl_SI/LC_MESSAGES/django.mo index 89a180821a..e3cc8cb43d 100644 Binary files a/mayan/apps/document_signatures/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/sl_SI/LC_MESSAGES/django.po index 50e13a83cc..9d53cfab60 100644 --- a/mayan/apps/document_signatures/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/sl_SI/LC_MESSAGES/django.po @@ -1,22 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-" +"edms/language/sl_SI/)\n" +"Language: sl_SI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: sl_SI\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" #: apps.py:51 permissions.py:8 settings.py:7 msgid "Document signatures" @@ -27,16 +29,14 @@ msgid "Date" msgstr "" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "Brez" @@ -44,64 +44,59 @@ msgstr "Brez" msgid "Type" msgstr "" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -202,12 +197,10 @@ msgid "Delete detached signatures" msgstr "" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -216,63 +209,60 @@ msgid "Verify document signatures" msgstr "" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." msgstr "Če je baza velika lahko operacija zahteva nekaj več časa da se izvrši." -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/vi_VN/LC_MESSAGES/django.mo index 47fe2505cb..7496a8cd1f 100644 Binary files a/mayan/apps/document_signatures/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/vi_VN/LC_MESSAGES/django.po index 2a771651f4..e57e050998 100644 --- a/mayan/apps/document_signatures/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/vi_VN/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Trung Phan Minh , 2013 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/" +"mayan-edms/language/vi_VN/)\n" +"Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -28,16 +29,14 @@ msgid "Date" msgstr "Ngày" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "Key ID" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "None" @@ -45,64 +44,59 @@ msgstr "None" msgid "Type" msgstr "" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -203,12 +197,10 @@ msgid "Delete detached signatures" msgstr "" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -217,63 +209,60 @@ msgid "Verify document signatures" msgstr "xác nhận chữ kí tài liệu" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." msgstr "" -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/document_signatures/locale/zh_CN/LC_MESSAGES/django.mo index 89fda776a7..8286755e48 100644 Binary files a/mayan/apps/document_signatures/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/document_signatures/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_signatures/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/document_signatures/locale/zh_CN/LC_MESSAGES/django.po index 4cd853a3a0..8e2a7d980e 100644 --- a/mayan/apps/document_signatures/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/document_signatures/locale/zh_CN/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Translators: # Ford Guo , 2014 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2016-04-27 18:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" +"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/" +"language/zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:51 permissions.py:8 settings.py:7 @@ -28,16 +29,14 @@ msgid "Date" msgstr "日期" #: apps.py:94 models.py:37 -#| msgid "Key ID: %s" msgid "Key ID" msgstr "密钥ID" -#: apps.py:98 forms.py:71 models.py:41 -#| msgid "Signature ID: %s" +#: apps.py:98 forms.py:64 models.py:41 msgid "Signature ID" msgstr "" -#: apps.py:99 forms.py:83 +#: apps.py:99 forms.py:76 msgid "None" msgstr "无" @@ -45,64 +44,59 @@ msgstr "无" msgid "Type" msgstr "" -#: forms.py:23 +#: forms.py:21 msgid "Key" msgstr "" -#: forms.py:27 +#: forms.py:25 msgid "Passphrase" msgstr "" -#: forms.py:53 -#| msgid "Signature file" +#: forms.py:46 msgid "Signature is embedded?" msgstr "" -#: forms.py:55 -#| msgid "Signature file" +#: forms.py:48 msgid "Signature date" msgstr "" -#: forms.py:58 -#| msgid "Signature ID: %s" +#: forms.py:51 msgid "Signature key ID" msgstr "" -#: forms.py:60 -#| msgid "Signature type: %s" +#: forms.py:53 msgid "Signature key present?" msgstr "" -#: forms.py:73 +#: forms.py:66 msgid "Key fingerprint" msgstr "" -#: forms.py:77 +#: forms.py:70 msgid "Key creation date" msgstr "" -#: forms.py:82 +#: forms.py:75 msgid "Key expiration date" msgstr "" -#: forms.py:87 +#: forms.py:80 msgid "Key length" msgstr "" -#: forms.py:91 +#: forms.py:84 msgid "Key algorithm" msgstr "" -#: forms.py:95 +#: forms.py:88 msgid "Key user ID" msgstr "" -#: forms.py:99 +#: forms.py:92 msgid "Key type" msgstr "" #: links.py:32 -#| msgid "Verify document signatures" msgid "Verify all documents" msgstr "" @@ -203,12 +197,10 @@ msgid "Delete detached signatures" msgstr "删除分离的签名" #: permissions.py:25 -#| msgid "Download detached signatures" msgid "Download detached document signatures" msgstr "" #: permissions.py:29 -#| msgid "Upload detached signatures" msgid "Upload detached document signatures" msgstr "" @@ -217,63 +209,60 @@ msgid "Verify document signatures" msgstr "核对文档签名" #: permissions.py:37 -#| msgid "Verify document signatures" msgid "View details of document signatures" msgstr "" -#: views.py:67 views.py:172 +#: views.py:60 views.py:155 msgid "Passphrase is needed to unlock this key." msgstr "" -#: views.py:77 views.py:182 +#: views.py:70 views.py:165 msgid "Passphrase is incorrect." msgstr "" -#: views.py:98 views.py:202 +#: views.py:91 views.py:185 msgid "Document version signed successfully." msgstr "" -#: views.py:129 +#: views.py:117 #, python-format msgid "Sign document version \"%s\" with a detached signature" msgstr "" -#: views.py:240 +#: views.py:218 #, python-format msgid "Sign document version \"%s\" with a embedded signature" msgstr "" -#: views.py:267 +#: views.py:245 #, python-format msgid "Delete detached signature: %s" msgstr "" -#: views.py:292 +#: views.py:270 #, python-format -#| msgid "Document signatures" msgid "Details for signature: %s" msgstr "" -#: views.py:339 +#: views.py:312 #, python-format msgid "Signatures for document version: %s" msgstr "" -#: views.py:375 +#: views.py:343 #, python-format msgid "Upload detached signature for document version: %s" msgstr "" -#: views.py:392 +#: views.py:360 msgid "On large databases this operation may take some time to execute." msgstr "在大数据库中,此操作将比较耗时。" -#: views.py:393 -#| msgid "Verify document signatures" +#: views.py:361 msgid "Verify all document for signatures?" msgstr "" -#: views.py:403 +#: views.py:371 msgid "Signature verification queued successfully." msgstr "" diff --git a/mayan/apps/document_signatures/models.py b/mayan/apps/document_signatures/models.py index 53dcff0de7..fede657b90 100644 --- a/mayan/apps/document_signatures/models.py +++ b/mayan/apps/document_signatures/models.py @@ -26,6 +26,16 @@ def upload_to(*args, **kwargs): @python_2_unicode_compatible class SignatureBaseModel(models.Model): + """ + Fields: + * key_id - Key Identifier - This is what identifies uniquely a key. Not + two keys in the world have the same Key ID. The Key ID is also used to + locate a key in the key servers: http://pgp.mit.edu + * signature_id - Signature ID - Every time a key is used to sign something + it will generate a unique signature ID. No two signature IDs are the same, + even when using the same key. + """ + document_version = models.ForeignKey( DocumentVersion, editable=False, related_name='signatures', verbose_name=_('Document version') diff --git a/mayan/apps/document_states/api_views.py b/mayan/apps/document_states/api_views.py new file mode 100644 index 0000000000..62de61d99e --- /dev/null +++ b/mayan/apps/document_states/api_views.py @@ -0,0 +1,603 @@ +from __future__ import absolute_import, unicode_literals + +from django.shortcuts import get_object_or_404 + +from rest_framework import generics + +from acls.models import AccessControlList +from documents.models import Document, DocumentType +from documents.permissions import permission_document_type_view +from rest_api.filters import MayanObjectPermissionsFilter +from rest_api.permissions import MayanPermission + +from .models import Workflow +from .permissions import ( + permission_workflow_create, permission_workflow_delete, + permission_workflow_edit, permission_workflow_view +) +from .serializers import ( + NewWorkflowDocumentTypeSerializer, WorkflowDocumentTypeSerializer, + WorkflowInstanceSerializer, WorkflowInstanceLogEntrySerializer, + WorkflowSerializer, WorkflowStateSerializer, WorkflowTransitionSerializer, + WritableWorkflowInstanceLogEntrySerializer, WritableWorkflowSerializer, + WritableWorkflowTransitionSerializer +) + + +class APIDocumentTypeWorkflowListView(generics.ListAPIView): + serializer_class = WorkflowSerializer + + def get(self, *args, **kwargs): + """ + Returns a list of all the document type workflows. + """ + return super(APIDocumentTypeWorkflowListView, self).get(*args, **kwargs) + + def get_document_type(self): + document_type = get_object_or_404(DocumentType, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_workflow_view, user=self.request.user, + obj=document_type + ) + + return document_type + + def get_queryset(self): + return self.get_document_type().workflows.all() + + +class APIWorkflowDocumentTypeList(generics.ListCreateAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = { + 'GET': (permission_document_type_view,), + } + + def get(self, *args, **kwargs): + """ + Returns a list of all the document types attached to a workflow. + """ + + return super(APIWorkflowDocumentTypeList, self).get(*args, **kwargs) + + def get_queryset(self): + """ + This view returns a list of document types that belong to a workflow + RESEARCH: Could the documents.api_views.APIDocumentTypeList class + be subclasses for this? + """ + + return self.get_workflow().document_types.all() + + def get_serializer_class(self): + if self.request.method == 'GET': + return WorkflowDocumentTypeSerializer + elif self.request.method == 'POST': + return NewWorkflowDocumentTypeSerializer + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + + return { + 'format': self.format_kwarg, + 'request': self.request, + 'workflow': self.get_workflow(), + 'view': self + } + + def get_workflow(self): + """ + Retrieve the parent workflow of the workflow document type. + Perform custom permission and access check. + """ + + if self.request.method == 'GET': + permission_required = permission_workflow_view + else: + permission_required = permission_workflow_edit + + workflow = get_object_or_404(Workflow, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_required, user=self.request.user, + obj=workflow + ) + + return workflow + + def post(self, request, *args, **kwargs): + """ + Attach a document type to a specified workflow. + """ + + return super( + APIWorkflowDocumentTypeList, self + ).post(request, *args, **kwargs) + + +class APIWorkflowDocumentTypeView(generics.RetrieveDestroyAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + lookup_url_kwarg = 'document_type_pk' + mayan_object_permissions = { + 'GET': (permission_document_type_view,), + } + serializer_class = WorkflowDocumentTypeSerializer + + def delete(self, request, *args, **kwargs): + """ + Remove a document type from the selected workflow. + """ + + return super( + APIWorkflowDocumentTypeView, self + ).delete(request, *args, **kwargs) + + def get(self, *args, **kwargs): + """ + Returns the details of the selected workflow document type. + """ + + return super(APIWorkflowDocumentTypeView, self).get(*args, **kwargs) + + def get_queryset(self): + return self.get_workflow().document_types.all() + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'format': self.format_kwarg, + 'request': self.request, + 'workflow': self.get_workflow(), + 'view': self + } + + def get_workflow(self): + """ + This view returns a document types that belongs to a workflow + RESEARCH: Could the documents.api_views.APIDocumentTypeView class + be subclasses for this? + RESEARCH: Since this is a parent-child API view could this be made + into a generic API class? + RESEARCH: Reuse get_workflow method from APIWorkflowDocumentTypeList? + """ + + if self.request.method == 'GET': + permission_required = permission_workflow_view + else: + permission_required = permission_workflow_edit + + workflow = get_object_or_404(Workflow, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_required, user=self.request.user, + obj=workflow + ) + + return workflow + + def perform_destroy(self, instance): + """ + RESEARCH: Move this kind of methods to the serializer instead it that + ability becomes available in Django REST framework + """ + + self.get_workflow().document_types.remove(instance) + + +class APIWorkflowListView(generics.ListCreateAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = { + 'GET': (permission_workflow_view,), + 'POST': (permission_workflow_create,) + } + permission_classes = (MayanPermission,) + queryset = Workflow.objects.all() + + def get(self, *args, **kwargs): + """ + Returns a list of all the workflows. + """ + return super(APIWorkflowListView, self).get(*args, **kwargs) + + def get_serializer_class(self): + if self.request.method == 'GET': + return WorkflowSerializer + else: + return WritableWorkflowSerializer + + def post(self, *args, **kwargs): + """ + Create a new workflow. + """ + return super(APIWorkflowListView, self).post(*args, **kwargs) + + +class APIWorkflowView(generics.RetrieveUpdateDestroyAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = { + 'DELETE': (permission_workflow_delete,), + 'GET': (permission_workflow_view,), + 'PATCH': (permission_workflow_edit,), + 'PUT': (permission_workflow_edit,) + } + queryset = Workflow.objects.all() + + def delete(self, *args, **kwargs): + """ + Delete the selected workflow. + """ + + return super(APIWorkflowView, self).delete(*args, **kwargs) + + def get(self, *args, **kwargs): + """ + Return the details of the selected workflow. + """ + + return super(APIWorkflowView, self).get(*args, **kwargs) + + def get_serializer_class(self): + if self.request.method == 'GET': + return WorkflowSerializer + else: + return WritableWorkflowSerializer + + def patch(self, *args, **kwargs): + """ + Edit the selected workflow. + """ + + return super(APIWorkflowView, self).patch(*args, **kwargs) + + def put(self, *args, **kwargs): + """ + Edit the selected workflow. + """ + + return super(APIWorkflowView, self).put(*args, **kwargs) + + +# Workflow state views + + +class APIWorkflowStateListView(generics.ListCreateAPIView): + serializer_class = WorkflowStateSerializer + + def get(self, *args, **kwargs): + """ + Returns a list of all the workflow states. + """ + return super(APIWorkflowStateListView, self).get(*args, **kwargs) + + def get_queryset(self): + return self.get_workflow().states.all() + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'format': self.format_kwarg, + 'request': self.request, + 'workflow': self.get_workflow(), + 'view': self + } + + def get_workflow(self): + if self.request.method == 'GET': + permission_required = permission_workflow_view + else: + permission_required = permission_workflow_edit + + workflow = get_object_or_404(Workflow, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_required, user=self.request.user, + obj=workflow + ) + + return workflow + + def post(self, *args, **kwargs): + """ + Create a new workflow state. + """ + return super(APIWorkflowStateListView, self).post(*args, **kwargs) + + +class APIWorkflowStateView(generics.RetrieveUpdateDestroyAPIView): + lookup_url_kwarg = 'state_pk' + serializer_class = WorkflowStateSerializer + + def delete(self, *args, **kwargs): + """ + Delete the selected workflow state. + """ + + return super(APIWorkflowStateView, self).delete(*args, **kwargs) + + def get(self, *args, **kwargs): + """ + Return the details of the selected workflow state. + """ + + return super(APIWorkflowStateView, self).get(*args, **kwargs) + + def get_queryset(self): + return self.get_workflow().states.all() + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'format': self.format_kwarg, + 'request': self.request, + 'workflow': self.get_workflow(), + 'view': self + } + + def get_workflow(self): + if self.request.method == 'GET': + permission_required = permission_workflow_view + else: + permission_required = permission_workflow_edit + + workflow = get_object_or_404(Workflow, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_required, user=self.request.user, + obj=workflow + ) + + return workflow + + def patch(self, *args, **kwargs): + """ + Edit the selected workflow state. + """ + + return super(APIWorkflowStateView, self).patch(*args, **kwargs) + + def put(self, *args, **kwargs): + """ + Edit the selected workflow state. + """ + + return super(APIWorkflowStateView, self).put(*args, **kwargs) + + +# Workflow transition views + + +class APIWorkflowTransitionListView(generics.ListCreateAPIView): + def get(self, *args, **kwargs): + """ + Returns a list of all the workflow transitions. + """ + return super(APIWorkflowTransitionListView, self).get(*args, **kwargs) + + def get_queryset(self): + return self.get_workflow().transitions.all() + + def get_serializer_class(self): + if self.request.method == 'GET': + return WorkflowTransitionSerializer + else: + return WritableWorkflowTransitionSerializer + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'format': self.format_kwarg, + 'request': self.request, + 'workflow': self.get_workflow(), + 'view': self + } + + def get_workflow(self): + if self.request.method == 'GET': + permission_required = permission_workflow_view + else: + permission_required = permission_workflow_edit + + workflow = get_object_or_404(Workflow, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_required, user=self.request.user, + obj=workflow + ) + + return workflow + + def post(self, *args, **kwargs): + """ + Create a new workflow transition. + """ + return super(APIWorkflowTransitionListView, self).post(*args, **kwargs) + + +class APIWorkflowTransitionView(generics.RetrieveUpdateDestroyAPIView): + lookup_url_kwarg = 'transition_pk' + + def delete(self, *args, **kwargs): + """ + Delete the selected workflow transition. + """ + + return super(APIWorkflowTransitionView, self).delete(*args, **kwargs) + + def get(self, *args, **kwargs): + """ + Return the details of the selected workflow transition. + """ + + return super(APIWorkflowTransitionView, self).get(*args, **kwargs) + + def get_queryset(self): + return self.get_workflow().transitions.all() + + def get_serializer_class(self): + if self.request.method == 'GET': + return WorkflowTransitionSerializer + else: + return WritableWorkflowTransitionSerializer + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'format': self.format_kwarg, + 'request': self.request, + 'workflow': self.get_workflow(), + 'view': self + } + + def get_workflow(self): + if self.request.method == 'GET': + permission_required = permission_workflow_view + else: + permission_required = permission_workflow_edit + + workflow = get_object_or_404(Workflow, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_required, user=self.request.user, + obj=workflow + ) + + return workflow + + def patch(self, *args, **kwargs): + """ + Edit the selected workflow transition. + """ + + return super(APIWorkflowTransitionView, self).patch(*args, **kwargs) + + def put(self, *args, **kwargs): + """ + Edit the selected workflow transition. + """ + + return super(APIWorkflowTransitionView, self).put(*args, **kwargs) + + +# Document workflow views + + +class APIWorkflowInstanceListView(generics.ListAPIView): + serializer_class = WorkflowInstanceSerializer + + def get(self, *args, **kwargs): + """ + Returns a list of all the document workflows. + """ + return super(APIWorkflowInstanceListView, self).get(*args, **kwargs) + + def get_document(self): + document = get_object_or_404(Document, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_workflow_view, user=self.request.user, + obj=document + ) + + return document + + def get_queryset(self): + return self.get_document().workflows.all() + + +class APIWorkflowInstanceView(generics.RetrieveAPIView): + lookup_url_kwarg = 'workflow_pk' + serializer_class = WorkflowInstanceSerializer + + def get(self, *args, **kwargs): + """ + Return the details of the selected document workflow. + """ + + return super(APIWorkflowInstanceView, self).get(*args, **kwargs) + + def get_document(self): + document = get_object_or_404(Document, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_workflow_view, user=self.request.user, + obj=document + ) + + return document + + def get_queryset(self): + return self.get_document().workflows.all() + + +class APIWorkflowInstanceLogEntryListView(generics.ListCreateAPIView): + def get(self, *args, **kwargs): + """ + Returns a list of all the document workflows log entries. + """ + return super(APIWorkflowInstanceLogEntryListView, self).get( + *args, **kwargs + ) + + def get_document(self): + document = get_object_or_404(Document, pk=self.kwargs['pk']) + + if self.request.method == 'GET': + """ + Only test for permission if reading. If writing, the permission + will be checked in the serializer + + IMPROVEMENT: + When writing, add check for permission or ACL for the workflow. + Failing that, check for ACLs for any of the workflow's transitions. + Failing that, then raise PermissionDenied + """ + + AccessControlList.objects.check_access( + permissions=permission_workflow_view, user=self.request.user, + obj=document + ) + + return document + + def get_serializer_class(self): + if self.request.method == 'GET': + return WorkflowInstanceLogEntrySerializer + else: + return WritableWorkflowInstanceLogEntrySerializer + + def get_serializer_context(self): + return { + 'format': self.format_kwarg, + 'request': self.request, + 'workflow_instance': self.get_workflow_instance(), + 'view': self + } + + def get_queryset(self): + return self.get_workflow_instance().log_entries.all() + + def get_workflow_instance(self): + workflow = get_object_or_404( + self.get_document().workflows, pk=self.kwargs['workflow_pk'] + ) + + return workflow + + def post(self, *args, **kwargs): + """ + Transition a document workflow by creating a new document workflow + log entry. + """ + return super(APIWorkflowInstanceLogEntryListView, self).post(*args, **kwargs) diff --git a/mayan/apps/document_states/apps.py b/mayan/apps/document_states/apps.py index 7e71d5b1a2..c7fdaf1ebb 100644 --- a/mayan/apps/document_states/apps.py +++ b/mayan/apps/document_states/apps.py @@ -4,12 +4,18 @@ from django.apps import apps from django.db.models.signals import post_save from django.utils.translation import ugettext_lazy as _ +from kombu import Exchange, Queue + +from acls import ModelPermission +from acls.links import link_acl_list from common import ( - MayanAppConfig, menu_facet, menu_object, menu_secondary, menu_setup, - menu_sidebar + MayanAppConfig, menu_facet, menu_main, menu_object, menu_secondary, + menu_setup, menu_sidebar, menu_tools ) from common.widgets import two_state_template +from mayan.celery import app from navigation import SourceColumn +from rest_api.classes import APIEndPoint from .handlers import launch_workflow from .links import ( @@ -20,19 +26,25 @@ from .links import ( link_setup_workflow_state_delete, link_setup_workflow_state_edit, link_setup_workflow_transitions, link_setup_workflow_transition_create, link_setup_workflow_transition_delete, link_setup_workflow_transition_edit, - link_workflow_instance_detail, link_workflow_instance_transition + link_tool_launch_all_workflows, link_workflow_instance_detail, + link_workflow_instance_transition, link_workflow_document_list, + link_workflow_list, link_workflow_state_document_list, + link_workflow_state_list ) +from .permissions import permission_workflow_transition class DocumentStatesApp(MayanAppConfig): app_url = 'states' + has_tests = True name = 'document_states' - test = True verbose_name = _('Document states') def ready(self): super(DocumentStatesApp, self).ready() + APIEndPoint(app=self, version_string='1') + Document = apps.get_model( app_label='documents', model_name='Document' ) @@ -40,9 +52,20 @@ class DocumentStatesApp(MayanAppConfig): Workflow = self.get_model('Workflow') WorkflowInstance = self.get_model('WorkflowInstance') WorkflowInstanceLogEntry = self.get_model('WorkflowInstanceLogEntry') + WorkflowRuntimeProxy = self.get_model('WorkflowRuntimeProxy') WorkflowState = self.get_model('WorkflowState') + WorkflowStateRuntimeProxy = self.get_model('WorkflowStateRuntimeProxy') WorkflowTransition = self.get_model('WorkflowTransition') + ModelPermission.register( + model=Workflow, permissions=(permission_workflow_transition,) + ) + + ModelPermission.register( + model=WorkflowTransition, + permissions=(permission_workflow_transition,) + ) + SourceColumn( source=Workflow, label=_('Initial state'), func=lambda context: context['object'].get_initial_state() or _('None') @@ -108,14 +131,32 @@ class DocumentStatesApp(MayanAppConfig): attribute='destination_state' ) + app.conf.CELERY_QUEUES.extend( + ( + Queue( + 'document_states', Exchange('document_states'), + routing_key='converter' + ), + ) + ) + + app.conf.CELERY_ROUTES.update( + { + 'document_states.tasks.task_launch_all_workflows': { + 'queue': 'document_states' + }, + } + ) + menu_facet.bind_links( links=(link_document_workflow_instance_list,), sources=(Document,) ) + menu_main.bind_links(links=(link_workflow_list,), position=10) menu_object.bind_links( links=( link_setup_workflow_states, link_setup_workflow_transitions, link_setup_workflow_document_types, link_setup_workflow_edit, - link_setup_workflow_delete + link_acl_list, link_setup_workflow_delete ), sources=(Workflow,) ) menu_object.bind_links( @@ -126,7 +167,7 @@ class DocumentStatesApp(MayanAppConfig): ) menu_object.bind_links( links=( - link_setup_workflow_transition_edit, + link_setup_workflow_transition_edit, link_acl_list, link_setup_workflow_transition_delete ), sources=(WorkflowTransition,) ) @@ -136,6 +177,16 @@ class DocumentStatesApp(MayanAppConfig): link_workflow_instance_transition ), sources=(WorkflowInstance,) ) + menu_object.bind_links( + links=( + link_workflow_document_list, link_workflow_state_list, + ), sources=(WorkflowRuntimeProxy,) + ) + menu_object.bind_links( + links=( + link_workflow_state_document_list, + ), sources=(WorkflowStateRuntimeProxy,) + ) menu_secondary.bind_links( links=(link_setup_workflow_list, link_setup_workflow_create), sources=( @@ -143,6 +194,12 @@ class DocumentStatesApp(MayanAppConfig): 'document_states:setup_workflow_list' ) ) + menu_secondary.bind_links( + links=(link_workflow_list,), + sources=( + WorkflowRuntimeProxy, + ) + ) menu_setup.bind_links(links=(link_setup_workflow_list,)) menu_sidebar.bind_links( links=( @@ -150,6 +207,7 @@ class DocumentStatesApp(MayanAppConfig): link_setup_workflow_transition_create ), sources=(Workflow,) ) + menu_tools.bind_links(links=(link_tool_launch_all_workflows,)) post_save.connect( launch_workflow, dispatch_uid='launch_workflow', sender=Document diff --git a/mayan/apps/document_states/forms.py b/mayan/apps/document_states/forms.py index 98ead3a160..df288b255b 100644 --- a/mayan/apps/document_states/forms.py +++ b/mayan/apps/document_states/forms.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django import forms from django.utils.translation import ugettext_lazy as _ @@ -32,11 +32,16 @@ class WorkflowTransitionForm(forms.ModelForm): class WorkflowInstanceTransitionForm(forms.Form): def __init__(self, *args, **kwargs): - workflow = kwargs.pop('workflow') + user = kwargs.pop('user') + workflow_instance = kwargs.pop('workflow_instance') super(WorkflowInstanceTransitionForm, self).__init__(*args, **kwargs) - self.fields['transition'].choices = workflow.get_transition_choices().values_list('pk', 'label') + self.fields[ + 'transition' + ].queryset = workflow_instance.get_transition_choices(_user=user) - transition = forms.ChoiceField(label=_('Transition')) + transition = forms.ModelChoiceField( + label=_('Transition'), queryset=WorkflowTransition.objects.none() + ) comment = forms.CharField( label=_('Comment'), required=False, widget=forms.widgets.Textarea() ) diff --git a/mayan/apps/document_states/links.py b/mayan/apps/document_states/links.py index f9a0e3bba3..f2d41f7e58 100644 --- a/mayan/apps/document_states/links.py +++ b/mayan/apps/document_states/links.py @@ -6,7 +6,7 @@ from navigation import Link from .permissions import ( permission_workflow_create, permission_workflow_delete, - permission_workflow_edit, permission_workflow_transition, + permission_workflow_edit, permission_workflow_tools, permission_workflow_view, ) @@ -71,12 +71,36 @@ link_setup_workflow_transitions = Link( permissions=(permission_workflow_view,), text=_('Transitions'), view='document_states:setup_workflow_transitions', args='object.pk' ) +link_tool_launch_all_workflows = Link( + icon='fa fa-sitemap', + permissions=(permission_workflow_tools,), + text=_('Launch all workflows'), + view='document_states:tool_launch_all_workflows' +) link_workflow_instance_detail = Link( permissions=(permission_workflow_view,), text=_('Detail'), view='document_states:workflow_instance_detail', args='resolved_object.pk' ) link_workflow_instance_transition = Link( - permissions=(permission_workflow_transition,), text=_('Transition'), + text=_('Transition'), view='document_states:workflow_instance_transition', args='resolved_object.pk' ) +link_workflow_document_list = Link( + permissions=(permission_workflow_view,), text=_('Workflow documents'), + view='document_states:workflow_document_list', args='resolved_object.pk' +) +link_workflow_list = Link( + permissions=(permission_workflow_view,), icon='fa fa-sitemap', + text=_('Workflows'), view='document_states:workflow_list' +) +link_workflow_state_document_list = Link( + permissions=(permission_workflow_view,), + text=_('State documents'), view='document_states:workflow_state_document_list', + args='resolved_object.pk' +) +link_workflow_state_list = Link( + permissions=(permission_workflow_view,), + text=_('States'), view='document_states:workflow_state_list', + args='resolved_object.pk' +) diff --git a/mayan/apps/document_states/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/ar/LC_MESSAGES/django.mo index a3be1e0026..0eacecbc8a 100644 Binary files a/mayan/apps/document_states/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/ar/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/ar/LC_MESSAGES/django.po index 5af554bcea..861f0e0fdf 100644 --- a/mayan/apps/document_states/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/ar/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -17,59 +17,59 @@ msgstr "" "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" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "لا شيء" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "مستخدم" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "تعليق" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "" @@ -93,7 +93,7 @@ msgstr "تحرير" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -105,74 +105,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -193,67 +225,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "ارسال" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/bg/LC_MESSAGES/django.mo index 4073880835..c8fb7b91e9 100644 Binary files a/mayan/apps/document_states/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/bg/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/bg/LC_MESSAGES/django.po index 1bb7f2623d..f96344cb95 100644 --- a/mayan/apps/document_states/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/bg/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -17,59 +17,59 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Няма" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Потребител" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Коментар" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "" @@ -93,7 +93,7 @@ msgstr "Редактиране" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -105,74 +105,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -193,67 +225,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "Подаване" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/bs_BA/LC_MESSAGES/django.mo index 802ddbf341..58378a55de 100644 Binary files a/mayan/apps/document_states/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/bs_BA/LC_MESSAGES/django.po index ea9fc3d137..d4c812c294 100644 --- a/mayan/apps/document_states/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/bs_BA/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -17,59 +17,59 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Nijedno" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Korisnik" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Komentar" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "" @@ -93,7 +93,7 @@ msgstr "Urediti" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -105,74 +105,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -193,67 +225,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "Podnijeti" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/da/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/da/LC_MESSAGES/django.mo index 23a6ef5dca..98c4631d29 100644 Binary files a/mayan/apps/document_states/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/da/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/da/LC_MESSAGES/django.po index 02bc28043d..7b864fa58b 100644 --- a/mayan/apps/document_states/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/da/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -17,59 +17,59 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Ingen" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Bruger" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Kommentar" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "" @@ -93,7 +93,7 @@ msgstr "" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -105,74 +105,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -193,67 +225,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/de_DE/LC_MESSAGES/django.mo index cfa420bae5..87c0b4ce4a 100644 Binary files a/mayan/apps/document_states/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/de_DE/LC_MESSAGES/django.po index 1bae99f4e6..6f6fbe01f0 100644 --- a/mayan/apps/document_states/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/de_DE/LC_MESSAGES/django.po @@ -4,13 +4,14 @@ # # Translators: # Berny , 2015 +# Jesaja Everling , 2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" -"Last-Translator: Mathias Behrle \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-24 23:13+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,59 +19,59 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "Status" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "Initialstatus" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Keiner" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "Aktueller Status" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Benutzer" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "Letzter Übergang" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "Datum und Zeit" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "Fertigstellung" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "Übergang" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Kommentar" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "Initialstatus" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "Herkunftsstatus" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "Zielstatus" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "Workflows" @@ -82,7 +83,7 @@ msgstr "Workflow erstellen" msgid "Delete" msgstr "Löschen" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "Dokumententypen" @@ -94,7 +95,7 @@ msgstr "Bearbeiten" msgid "Create state" msgstr "Status erstellen" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "Status" @@ -106,74 +107,106 @@ msgstr "Übergang erstellen" msgid "Transitions" msgstr "Übergänge" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "Alle Workflows starten" + +#: links.py:81 msgid "Detail" msgstr "Detail" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "Bezeichnung" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "Workflow" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "Diesen Status markieren, wenn der Workflow damit starten soll. Nur ein Status kann initial sein." -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "Initial" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "Ermöglicht den Eintrag einer Zahl (ohne Prozentzeichen), die den Stand der Fertigstellung in Bezug auf den Workflow angibt." -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "Workflow Status" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "Workflow Status" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "Workflow Übergang" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "Workflow Übergänge" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "Dokument" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "Workflow" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "Workflows" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "Zeit" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "Workflow Logeintrag" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "Workflow Logeinträge" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "Dokumentenworkflows" @@ -194,67 +227,122 @@ msgstr "Workflows bearbeiten" msgid "View workflows" msgstr "Workflows anzeigen" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "Workflowübergänge durchführen" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "Workflows für Dokument: %s" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "Dokumente mit Workflow %s" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "Detail für Workflow: %(workflow)s" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "Absenden" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "Übergang für Workflow %s durchführen" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "Verfügbare Dokumententypen" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "Dokumententypen zugeordnet zu diesem Workflow" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "Dokumententypen zugeordnet zu Workflow %s" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "Status für Workflow %s" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "Status für Workflow %s erstellen" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "Übergänge für Workflow %s" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "Übergänge für Workflow %s erstellen" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "Integritätsfehler beim Speichern des Übergangs" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "Dokumente mit Workflow %s" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/en/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/en/LC_MESSAGES/django.mo index 252bfd331b..fa72cf2a19 100644 Binary files a/mayan/apps/document_states/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/en/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/en/LC_MESSAGES/django.po index aa92837534..de1e8be63e 100644 --- a/mayan/apps/document_states/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,59 +17,59 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "" @@ -93,7 +93,7 @@ msgstr "" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -105,74 +105,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -193,67 +225,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/es/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/es/LC_MESSAGES/django.mo index 1b8ef878f8..aba1993caf 100644 Binary files a/mayan/apps/document_states/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/es/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/es/LC_MESSAGES/django.po index 5106c2cc87..e7f99cfae5 100644 --- a/mayan/apps/document_states/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/es/LC_MESSAGES/django.po @@ -4,13 +4,13 @@ # # Translators: # Roberto Rosario, 2015 -# Roberto Rosario, 2016 +# Roberto Rosario, 2016-2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-05-09 01:51+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-23 02:58+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -19,59 +19,59 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "Estados de documentos" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "Estado inicial" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Ninguno" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "Estado actual" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Usuario" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "Última transición" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "Fecha y hora" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "Cantidad de completación" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "Transición" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Comentario" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "¿Es el estado inicial?" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "Estado origen" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "Estado destino" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "Flujos de trabajo" @@ -83,7 +83,7 @@ msgstr "Crear flujo de trabajo" msgid "Delete" msgstr "Borrar" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "Tipos de documentos" @@ -95,7 +95,7 @@ msgstr "Editar" msgid "Create state" msgstr "Crear estado" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "Estados" @@ -107,74 +107,106 @@ msgstr "Crear transición" msgid "Transitions" msgstr "Transiciones" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "Iniciar todos los flujos de trabajo" + +#: links.py:81 msgid "Detail" msgstr "Detalle" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "Documentos del flujo de trabajo" + +#: links.py:99 +msgid "State documents" +msgstr "Documentos del estado de flujo" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "Etiqueta" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "Flujo de trabajo" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "Seleccione si este va a ser el estado con el que desea que el flujo de trabajo comience. Sólo un estado puede ser el estado inicial." -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "Inicial" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "Introduzca el porcentaje de finalización que este estado representa en relación con el flujo de trabajo. Utilice números sin el signo de porcentaje." -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "Estado de flujo de trabajo" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "Estados de flujo de trabajo" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "Transición de flujo de trabajo" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "Transiciones de flujo de trabajo" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "Documento" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "Instancia de flujo de trabajo" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "Instancias de flujo de trabajo" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "Fecha y hora" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "Entrada de registro de la instancia de flujo de trabajo" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "Entradas de registro de las instancias de flujos de trabajo" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "No hay opción valida de transición." + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "Flujos de trabajo de document" @@ -195,67 +227,122 @@ msgstr "Editar flujos de trabajo" msgid "View workflows" msgstr "Ver flujos de trabajo" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "Realizar transiciones" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "Ejecutar herramientas de flujos de trabajo" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "Llave primaria del tipo de documento a ser agregado." + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "Llave primaria del estado de destino a ser agregado." + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "Llave primaria del estado inicial a ser agregado." + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "Un enlace a la historia completa de este flujo de trabajo." + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "Flujos de trabajo para el documento: %s" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "Documentos con el flujo de trabajo: %s" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "Detalle de flujo de trabajo: %(workflow)s" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "Enviar" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "Realizar la transición de flujo de trabajo: %s" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "Tipos de documentos disponibles" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "Tipos de documentos asignados a este flujo de trabajo" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "Tipos de documentos asignados al flujo de trabajo: %s" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "Estados del flujo de trabajo: %s" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "Crear estados para el flujo de trabajo: %s" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "Transiciones de flujo de trabajo: %s" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "Crear transiciones para el flujo de trabajo: %s" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "No se puede guardar la transición; error de integridad." + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "Documentos con el flujo de trabajo: %s" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "Documentos en el flujo de trabajo \"%s\", estado \"%s\"" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "¿Lanzar todos los flujos de trabajo?" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "Lanzamiento de flujos de trabajo sometido con éxito." diff --git a/mayan/apps/document_states/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/fa/LC_MESSAGES/django.mo index 23911ffbf5..7aedcf1519 100644 Binary files a/mayan/apps/document_states/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/fa/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/fa/LC_MESSAGES/django.po index 51265ea7fc..e03526946d 100644 --- a/mayan/apps/document_states/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/fa/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -18,59 +18,59 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "وضعیت اولیه" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "هیچ" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "وضعیت فعلی" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "کاربر" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "آخرین تغییر وضعیت" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "تاریخ و زمان" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "تغییر وضعیت" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "شرح" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "آیا در وضعیت اولیه است؟" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "وضعیت شروع" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "وضعیت نهایی" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "گردشکار" @@ -82,7 +82,7 @@ msgstr "" msgid "Delete" msgstr "حذف" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "انواع سند" @@ -94,7 +94,7 @@ msgstr "ویرایش" msgid "Create state" msgstr "وضغیت ایجاد" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "وضعیت ها" @@ -106,74 +106,106 @@ msgstr "تغییر وضعیت به ایجاد" msgid "Transitions" msgstr "تغییر وضعیت ها" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "شرح" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "برچسب" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "گردشکار" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "در صورتیکه این وضعیت شروع گردشکار باشد این وضعیت را انتخاب کنید. وضعیت فقط میتواند وضعیت اولیه باشد." -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "اولیه" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "وضعیت گردشکار" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "وضعیتهای گردشکار" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "تغییر وضعیت گردشکار" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "تغییر وضعیت های گردشکار" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "سند" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "موردی از گردشکار" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "موردهای گردشکار" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "تاریخ زمان" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "ورودیه لاگ برای مورد گردشکار" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "ورودیهای مورد گردشکار" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -194,67 +226,122 @@ msgstr "ویرایش گردشکار" msgid "View workflows" msgstr "مشاهده گردشکار" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "گردشکارهای سند : %s" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "شرح گردشکار : %(workflow)s" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "ارسال" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "انجام تغییر وضعیت گردشکار : %s" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "نوع سند مرتبط با گردش کاری: %s" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "وضعیتهای گردشکار : %s" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "وضعیت ایجاد برای گردشکار : %s" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "تغییر وضعیتهای گردشکار : %s" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "ایجاد تغییر وضعیت برای گردشکار : %s" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "قادر به ذخیره انتقال نیست:خطای تجمع" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/fr/LC_MESSAGES/django.mo index 6c19328d5a..e342799e2d 100644 Binary files a/mayan/apps/document_states/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/fr/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/fr/LC_MESSAGES/django.po index 6d01182f7e..e1ebbb97e6 100644 --- a/mayan/apps/document_states/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/fr/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" -"Last-Translator: Christophe CHAUVET \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,59 +18,59 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "États du document" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "État initial" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Aucun" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "État actuel" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Utilisateur" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "Dernière transition" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "Date et heure" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "Finalisation" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "Transition" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Commentaire" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "Est ce l'état initial?" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "État d'origine" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "État de destination" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "Flux de travail" @@ -82,7 +82,7 @@ msgstr "Créer un flux de travail" msgid "Delete" msgstr "Supprimer" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "Types de document" @@ -94,7 +94,7 @@ msgstr "Modifier" msgid "Create state" msgstr "Créer un état" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "États" @@ -106,74 +106,106 @@ msgstr "Créer une transition" msgid "Transitions" msgstr "Transitions" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "Détail" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "Étiquette" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "Flux de travail" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "Sélectionnez si ceci sera l'état avec lequel vous voulez que le flux de travail pour démarrer. Un seul état peut être à l'état initial." -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "Initial" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "Entrer le pourcentage de finalisation que cet état représente dans la relation du flux de travail. Saisir un nombre sans le signe pourcentage." -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "État du flux de travail" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "États du flux de travail" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "Transition du flux de travail" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "Transitions du flux de travail" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "Document" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "Instance du flux de travail" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "Instances du flux de travail" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "Date et heure" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "Entrée de la journalisation de l'instance du flux de travail" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "Entrées de la journlisation du flux de travail" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "Flux de travail du document" @@ -194,67 +226,122 @@ msgstr "Modifier des flux de travail" msgid "View workflows" msgstr "Voir les flux de travail" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "Transition des flux de travails" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "Flux de travail du document: %s" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "Documents avec le flux de travail: %s" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "Détail du flux de travail: %(workflow)s" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "Soumettre" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "Construire une transition pour le flux de travail: %s" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "Types de document disponible" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "Types de document associé à ce flux de travail" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "Types de document assignés au flux de travail: %s" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "États du flux de travail: %s" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "Créer des états pour le flux de travail: %s" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "Transitions du flux de travail: %s " -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "Créer des transitions du flux de travail: %s" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "Impossible de sauvegarder la transition; erreur d'intégrité." + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "Documents avec le flux de travail: %s" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/hu/LC_MESSAGES/django.mo index a584f4a2bd..0512781fa9 100644 Binary files a/mayan/apps/document_states/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/hu/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/hu/LC_MESSAGES/django.po index c3d442d94a..4bf8d2545a 100644 --- a/mayan/apps/document_states/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/hu/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -17,59 +17,59 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Semmi" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Felhasználó" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Megjegyzés" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "" @@ -93,7 +93,7 @@ msgstr "" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -105,74 +105,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -193,67 +225,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/id/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/id/LC_MESSAGES/django.mo index 568695d2a2..ac4dddfc16 100644 Binary files a/mayan/apps/document_states/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/id/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/id/LC_MESSAGES/django.po index 00d127e3b5..27ef602717 100644 --- a/mayan/apps/document_states/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/id/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -17,59 +17,59 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Pengguna" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Komentar" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "" @@ -93,7 +93,7 @@ msgstr "" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -105,74 +105,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -193,67 +225,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/it/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/it/LC_MESSAGES/django.mo index 6a81bf8a8c..4766b15a95 100644 Binary files a/mayan/apps/document_states/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/it/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/it/LC_MESSAGES/django.po index 15d11b1ab4..e5ea9dc24b 100644 --- a/mayan/apps/document_states/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/it/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-09-24 10:35+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,59 +18,59 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "Stati documento" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "Stato iniziale" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Nessuna " -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "Stato corrente" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Utente" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "Ultima transizione" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "Data e ora" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "Completamento" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "Transizione" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Commento" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "Stato iniziale?" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "Stato originale" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "Stato di destinazione" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "I workflow" @@ -82,7 +82,7 @@ msgstr "Crea workflow" msgid "Delete" msgstr "Cancella" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "Tipi di documento" @@ -94,7 +94,7 @@ msgstr "Modifica" msgid "Create state" msgstr "Crea stato" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "Stati" @@ -106,74 +106,106 @@ msgstr "Crea transizione" msgid "Transitions" msgstr "Transizioni" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "Dettagli" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "Etichetta" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "Workflow" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "Seleziona se questo è lo stato da utilizzare quando il workflow inizia. Solo uno stato può essere quello iniziale." -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "Iniziale" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "Inserisci la percentuale di completamento che questo stato rappresenta in relazione al workflow. Usa i numeri senza segno di percentuale." -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "Stato workflow" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "Stati workflow" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "Transizione workflow" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "Transizioni workflow" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "Documento" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "Istanza workflow" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "Istanze workflow" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "Data e ora" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "Voce log istanza workflow" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "Voci log istanza workflow" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "Workflow documento" @@ -194,67 +226,122 @@ msgstr "Modifica workflows" msgid "View workflows" msgstr "Vedi workflows" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "Transizioni workflow" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "Workflow per il documento: %s" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "Documento con il workflow: %s" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "Dettagli del workflow: %(workflow)s" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "Invia" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "Esegui transizione per il workflow: %s" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "Tipi di documento disponibili" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "Tipi di documento assegnati a questo workflow" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "Tipi di documento assegnati al workflow: %s" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "Stati del workflow: %s" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "Crea stati del workflow: %s" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "Trasizioni per il workflow: %s" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "Crea trasizioni per il workflow: %s" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "Impossibile salvare la transizione: errore di integrità" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "Documento con il workflow: %s" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/nl_NL/LC_MESSAGES/django.mo index d6509b12eb..546790da84 100644 Binary files a/mayan/apps/document_states/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/nl_NL/LC_MESSAGES/django.po index 11d63efbac..396dfb60bc 100644 --- a/mayan/apps/document_states/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/nl_NL/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-10-28 12:43+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,59 +18,59 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "Documentstaten" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "Initiële staat" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Geen" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "Huidige staat" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Gebruiker" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "Laatste transitie" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "Datum en tijd" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "Voltooiing" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "Transitie" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Commentaar" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "Originele staat" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "Bestemmingsstaat" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -82,7 +82,7 @@ msgstr "" msgid "Delete" msgstr "Verwijder" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "Documentsoorten" @@ -94,7 +94,7 @@ msgstr "bewerken" msgid "Create state" msgstr "Maak staat aan" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "Staten" @@ -106,74 +106,106 @@ msgstr "Transitie aanmaken" msgid "Transitions" msgstr "Transities" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "Detai" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "Label" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "Workflow" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "Initieel" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "Workflowstaat" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "Workflowstaten" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "Workflowtransitie" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "Workflowtransities" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "Document" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "Workflowinstantie" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "Workflowinstanties" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "Datumtijd" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "Documentworkflows" @@ -194,67 +226,122 @@ msgstr "Workflows verwijderen" msgid "View workflows" msgstr "Workflows bekijken" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "Workflows voor document: %s" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "Documenten met de workflow: %s" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "Detail van workflow: %(workflow)s" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "Verstuur" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "Beschikbare documentsoorten" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "Documenten met de workflow: %s" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/pl/LC_MESSAGES/django.mo index c658c7653c..57d3fe4def 100644 Binary files a/mayan/apps/document_states/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/pl/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/pl/LC_MESSAGES/django.po index 3e363e2acd..02d15c69dd 100644 --- a/mayan/apps/document_states/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/pl/LC_MESSAGES/django.po @@ -8,69 +8,69 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "Stan początkowy" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Brak" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "Aktualny stan" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Użytkownik" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "Data i godzina" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Komentarz" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "Czy jest stan początkowy?" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -82,7 +82,7 @@ msgstr "" msgid "Delete" msgstr "Usuń" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "Typy dokumentu" @@ -94,7 +94,7 @@ msgstr "Edytuj" msgid "Create state" msgstr "Utwórz stan" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "Stany" @@ -106,74 +106,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "Szczegół" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "Etykieta" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "Obieg dokumentów" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "Początkowy" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "Stan obiegu" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "Stany obiegu" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "Dokument" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -194,67 +226,122 @@ msgstr "Edytuj obieg" msgid "View workflows" msgstr "Pokaż obieg" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "Obiegi dokumentu: %s" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "Szczegóły obiegu dokumentów: %(workflow)s" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "Wyślij" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "Dokonaj zmiany w obiegu dokumentów: %s" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "Dostępne typy dokumentów" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "Typy dokumentów przypisane do obiegu dokumentów: %s" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "Stany obiegu dokumentów: %s" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "Utwórz stany obiegu dokumentów: %s" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "Zmiany obiegu dokumentów: %s" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "Utwórz zmiany w obiegu dokumentów: %s" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "Nie można zapisać zmiany; błąd integralności." + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/pt/LC_MESSAGES/django.mo index 31283dc65e..4a1f3fef9c 100644 Binary files a/mayan/apps/document_states/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/pt/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/pt/LC_MESSAGES/django.po index e1aa11eff8..e1282f687d 100644 --- a/mayan/apps/document_states/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/pt/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -17,59 +17,59 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Nenhum" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Utilizador" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Comentário" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Delete" msgstr "Eliminar" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "" @@ -93,7 +93,7 @@ msgstr "Editar" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -105,74 +105,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "Nome" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -193,67 +225,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "Submeter" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/pt_BR/LC_MESSAGES/django.mo index 5d84a7fcbb..4910df4679 100644 Binary files a/mayan/apps/document_states/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/pt_BR/LC_MESSAGES/django.po index ab6fb8a370..ee00694287 100644 --- a/mayan/apps/document_states/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/pt_BR/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-11-17 23:07+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,59 +19,59 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "Estados de documentos" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "Estado Inicial" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Nenhum" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "Estado corrente" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Usuário" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "Última transação" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "data e hora" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "Finalização" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "Transações" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Comentário" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "é estado inicial?" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "Estado Original" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "Estado de destino" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "Workflows" @@ -83,7 +83,7 @@ msgstr "Criar fluxo de trabalho" msgid "Delete" msgstr "Excluir" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "Tipos de Documentos" @@ -95,9 +95,9 @@ msgstr "Editar" msgid "Create state" msgstr "Criar estado" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" -msgstr "estado" +msgstr "Estados" #: links.py:58 msgid "Create transition" @@ -107,74 +107,106 @@ msgstr "Criar Transições" msgid "Transitions" msgstr "Transações" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "Detalhes" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "Label" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "Workflow" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "Selecione se este será o estado com o qual você deseja que o fluxo de trabalho para começar em. Apenas um Estado pode ser o estado inicial." -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "Inicial" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "Entre com a porcentagem de finalização que este estado representa em relação com o fluxo de trabalho. Utilize números sem o sinal de porcentagem." -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "Estado do Workflow" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "Estados do Workflow" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "Transição do Workflow" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "Transição dos Workflows" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "Documento" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "Instância do Workflow" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "instâncias do Workflow " -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "Hora e data" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "Workflow instance log de entrada " -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "Workflow instance log de entradas" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "Fluxos de trabalho do documento" @@ -195,67 +227,122 @@ msgstr "Editar Workflows" msgid "View workflows" msgstr "Ver workflows" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "Realizar transição" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "Workflows para documento: %s" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "Documentos com o fluxo de trabalho: %s" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "Detalhe do workflow: %(workflow)s" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "Submeter" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "Fazer a transição para o workflow: %s" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "Tipos de documentos disponíveis" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "Tipos de documentos atribuídos a este fluxo de trabalho" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "Os tipos de documento atribuído ao workflow: %s" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "Estado do workflow: %s" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "Criar estados para Workflow: %s" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "Transição do Workflow: %s" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "Criar Transição para Workflow: %s" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "Não foi possível salvar transição; erro de integridade." + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "Documentos com o fluxo de trabalho: %s" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/ro_RO/LC_MESSAGES/django.mo index 03d30df385..cd3f1ab1e1 100644 Binary files a/mayan/apps/document_states/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/ro_RO/LC_MESSAGES/django.po index 12d7c01369..c7222846b4 100644 --- a/mayan/apps/document_states/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/ro_RO/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-04-17 09:43+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -17,59 +17,59 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Nici unul" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "utilizator" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Comentariu" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Delete" msgstr "Șterge" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "" @@ -93,7 +93,7 @@ msgstr "Editează" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -105,74 +105,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "Etichetă" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -193,67 +225,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "Trimiteţi" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/ru/LC_MESSAGES/django.mo index dda6baba5e..5f0bf06594 100644 Binary files a/mayan/apps/document_states/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/ru/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/ru/LC_MESSAGES/django.po index 4a34ca5627..28fb86834f 100644 --- a/mayan/apps/document_states/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/ru/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-11-02 04:15+0000\n" -"Last-Translator: lilo.panic\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,59 +18,59 @@ msgstr "" "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" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "Статусы документа" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "Исходное состояние" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Ничего" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "Текущее состояние" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Пользователь" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "Дата и время" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "Завершение" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "Переход" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Комментарий" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -82,7 +82,7 @@ msgstr "" msgid "Delete" msgstr "Удалить" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "Типы документов" @@ -94,7 +94,7 @@ msgstr "Редактировать" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -106,74 +106,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "Надпись" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "Документ" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -194,67 +226,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "Подтвердить" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "Доступные типы документов" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/sl_SI/LC_MESSAGES/django.mo index d02ec2a0ec..a9b3f05574 100644 Binary files a/mayan/apps/document_states/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/sl_SI/LC_MESSAGES/django.po index 50b8799fb8..e6fa88287b 100644 --- a/mayan/apps/document_states/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/sl_SI/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-11-17 08:59+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-23 16:43+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -17,59 +17,59 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "Brez" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Komentar" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "" @@ -93,7 +93,7 @@ msgstr "" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -105,74 +105,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "Oznaka" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" -msgstr "" +msgstr "Dokument" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -193,67 +225,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/vi_VN/LC_MESSAGES/django.mo index a5c9bdb86e..eacc2529ec 100644 Binary files a/mayan/apps/document_states/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/vi_VN/LC_MESSAGES/django.po index cbf0d01988..0fdaeda676 100644 --- a/mayan/apps/document_states/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/vi_VN/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -17,59 +17,59 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "None" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "Người dùng" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "Chú thích" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "" @@ -93,7 +93,7 @@ msgstr "Sửa" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -105,74 +105,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -193,67 +225,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/document_states/locale/zh_CN/LC_MESSAGES/django.mo index 1c0a152157..09b720041d 100644 Binary files a/mayan/apps/document_states/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/document_states/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/document_states/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/document_states/locale/zh_CN/LC_MESSAGES/django.po index 4989ac9c63..ec2dd2a8cb 100644 --- a/mayan/apps/document_states/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/document_states/locale/zh_CN/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:53-0400\n" -"PO-Revision-Date: 2016-03-21 21:09+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -17,59 +17,59 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:31 +#: apps.py:41 msgid "Document states" msgstr "" -#: apps.py:47 +#: apps.py:70 msgid "Initial state" msgstr "" -#: apps.py:48 apps.py:58 apps.py:68 apps.py:74 +#: apps.py:71 apps.py:81 apps.py:91 apps.py:97 msgid "None" msgstr "无" -#: apps.py:52 +#: apps.py:75 msgid "Current state" msgstr "" -#: apps.py:56 apps.py:83 models.py:189 +#: apps.py:79 apps.py:106 models.py:237 msgid "User" msgstr "用户" -#: apps.py:62 +#: apps.py:85 msgid "Last transition" msgstr "" -#: apps.py:66 apps.py:79 +#: apps.py:89 apps.py:102 msgid "Date and time" msgstr "" -#: apps.py:72 apps.py:99 models.py:79 +#: apps.py:95 apps.py:122 models.py:84 msgid "Completion" msgstr "" -#: apps.py:86 forms.py:39 links.py:79 models.py:187 +#: apps.py:109 forms.py:43 links.py:85 models.py:235 msgid "Transition" msgstr "" -#: apps.py:90 forms.py:41 models.py:190 +#: apps.py:113 forms.py:46 models.py:238 msgid "Comment" msgstr "评论" -#: apps.py:95 +#: apps.py:118 msgid "Is initial state?" msgstr "" -#: apps.py:103 models.py:105 +#: apps.py:126 models.py:111 msgid "Origin state" msgstr "" -#: apps.py:107 models.py:109 +#: apps.py:130 models.py:115 msgid "Destination state" msgstr "" -#: links.py:15 links.py:38 models.py:59 views.py:185 +#: links.py:15 links.py:38 links.py:95 models.py:64 views.py:130 views.py:409 msgid "Workflows" msgstr "" @@ -81,7 +81,7 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:29 models.py:25 +#: links.py:29 models.py:29 msgid "Document types" msgstr "" @@ -93,7 +93,7 @@ msgstr "" msgid "Create state" msgstr "" -#: links.py:54 +#: links.py:54 links.py:104 msgid "States" msgstr "" @@ -105,74 +105,106 @@ msgstr "" msgid "Transitions" msgstr "" -#: links.py:75 +#: links.py:77 +msgid "Launch all workflows" +msgstr "" + +#: links.py:81 msgid "Detail" msgstr "" -#: models.py:21 models.py:67 models.py:101 +#: links.py:90 +msgid "Workflow documents" +msgstr "" + +#: links.py:99 +msgid "State documents" +msgstr "" + +#: models.py:25 models.py:72 models.py:107 msgid "Label" msgstr "" -#: models.py:58 models.py:65 models.py:99 models.py:126 +#: models.py:63 models.py:70 models.py:105 models.py:133 msgid "Workflow" msgstr "" -#: models.py:71 +#: models.py:76 msgid "" "Select if this will be the state with which you want the workflow to start " "in. Only one state can be the initial state." msgstr "" -#: models.py:73 +#: models.py:78 msgid "Initial" msgstr "" -#: models.py:77 +#: models.py:82 msgid "" "Enter the percent of completion that this state represents in relation to " "the workflow. Use numbers without the percent sign." msgstr "" -#: models.py:92 +#: models.py:98 msgid "Workflow state" msgstr "" -#: models.py:93 +#: models.py:99 msgid "Workflow states" msgstr "" -#: models.py:119 +#: models.py:126 msgid "Workflow transition" msgstr "" -#: models.py:120 +#: models.py:127 msgid "Workflow transitions" msgstr "" -#: models.py:129 +#: models.py:136 msgid "Document" msgstr "" -#: models.py:173 models.py:181 +#: models.py:221 models.py:229 msgid "Workflow instance" msgstr "" -#: models.py:174 +#: models.py:222 msgid "Workflow instances" msgstr "" -#: models.py:184 +#: models.py:232 msgid "Datetime" msgstr "" -#: models.py:196 +#: models.py:244 msgid "Workflow instance log entry" msgstr "" -#: models.py:197 +#: models.py:245 msgid "Workflow instance log entries" msgstr "" +#: models.py:249 +msgid "Not a valid transition choice." +msgstr "" + +#: models.py:255 +msgid "Workflow runtime proxy" +msgstr "" + +#: models.py:256 +msgid "Workflow runtime proxies" +msgstr "" + +#: models.py:262 +msgid "Workflow state runtime proxy" +msgstr "" + +#: models.py:263 +msgid "Workflow state runtime proxies" +msgstr "" + #: permissions.py:7 msgid "Document workflows" msgstr "" @@ -193,67 +225,122 @@ msgstr "" msgid "View workflows" msgstr "" -#: permissions.py:26 +#: permissions.py:25 msgid "Transition workflows" msgstr "" -#: views.py:57 +#: permissions.py:28 +msgid "Execute workflow tools" +msgstr "" + +#: serializers.py:22 +msgid "Primary key of the document type to be added." +msgstr "" + +#: serializers.py:37 +msgid "" +"API URL pointing to a document type in relation to the workflow to which it " +"is attached. This URL is different than the canonical document type URL." +msgstr "" + +#: serializers.py:116 +msgid "Primary key of the destination state to be added." +msgstr "" + +#: serializers.py:120 +msgid "Primary key of the origin state to be added." +msgstr "" + +#: serializers.py:218 +msgid "" +"API URL pointing to a workflow in relation to the document to which it is " +"attached. This URL is different than the canonical workflow URL." +msgstr "" + +#: serializers.py:227 +msgid "A link to the entire history of this workflow." +msgstr "" + +#: serializers.py:259 +msgid "" +"Comma separated list of document type primary keys to which this workflow " +"will be attached." +msgstr "" + +#: serializers.py:319 +msgid "Primary key of the transition to be added." +msgstr "" + +#: views.py:54 #, python-format msgid "Workflows for document: %s" msgstr "" -#: views.py:91 -#, python-format -msgid "Documents with the workflow: %s" -msgstr "" - -#: views.py:116 +#: views.py:78 #, python-format msgid "Detail of workflow: %(workflow)s" msgstr "" -#: views.py:162 +#: views.py:106 msgid "Submit" msgstr "提交" -#: views.py:164 +#: views.py:108 #, python-format msgid "Do transition for workflow: %s" msgstr "" -#: views.py:215 +#: views.py:160 msgid "Available document types" msgstr "" -#: views.py:216 +#: views.py:161 msgid "Document types assigned this workflow" msgstr "" -#: views.py:226 +#: views.py:171 #, python-format msgid "Document types assigned the workflow: %s" msgstr "" -#: views.py:269 +#: views.py:210 views.py:503 #, python-format msgid "States of workflow: %s" msgstr "" -#: views.py:287 +#: views.py:228 #, python-format msgid "Create states for workflow: %s" msgstr "" -#: views.py:363 +#: views.py:304 #, python-format msgid "Transitions of workflow: %s" msgstr "" -#: views.py:376 +#: views.py:317 #, python-format msgid "Create transitions for workflow: %s" msgstr "" -#: views.py:406 +#: views.py:347 msgid "Unable to save transition; integrity error." msgstr "" + +#: views.py:435 +#, python-format +msgid "Documents with the workflow: %s" +msgstr "" + +#: views.py:482 +#, python-format +msgid "Documents in the workflow \"%s\", state \"%s\"" +msgstr "" + +#: views.py:517 +msgid "Launch all workflows?" +msgstr "" + +#: views.py:524 +msgid "Workflow launch queued successfully." +msgstr "" diff --git a/mayan/apps/document_states/migrations/0003_auto_20170325_0447.py b/mayan/apps/document_states/migrations/0003_auto_20170325_0447.py new file mode 100644 index 0000000000..76b055a35b --- /dev/null +++ b/mayan/apps/document_states/migrations/0003_auto_20170325_0447.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2017-03-25 04:47 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('document_states', '0002_workflowstate_completion'), + ] + + operations = [ + migrations.CreateModel( + name='WorkflowRuntimeProxy', + fields=[ + ], + options={ + 'verbose_name': 'Workflow runtime proxy', + 'proxy': True, + 'verbose_name_plural': 'Workflow runtime proxies', + }, + bases=('document_states.workflow',), + ), + migrations.CreateModel( + name='WorkflowStateRuntimeProxy', + fields=[ + ], + options={ + 'verbose_name': 'Workflow state runtime proxy', + 'proxy': True, + 'verbose_name_plural': 'Workflow state runtime proxies', + }, + bases=('document_states.workflowstate',), + ), + migrations.AlterModelOptions( + name='workflow', + options={'ordering': ('label',), 'verbose_name': 'Workflow', 'verbose_name_plural': 'Workflows'}, + ), + migrations.AlterModelOptions( + name='workflowstate', + options={'ordering': ('label',), 'verbose_name': 'Workflow state', 'verbose_name_plural': 'Workflow states'}, + ), + migrations.AlterModelOptions( + name='workflowtransition', + options={'ordering': ('label',), 'verbose_name': 'Workflow transition', 'verbose_name_plural': 'Workflow transitions'}, + ), + ] diff --git a/mayan/apps/document_states/models.py b/mayan/apps/document_states/models.py index 09fc7cf345..d58ebb527c 100644 --- a/mayan/apps/document_states/models.py +++ b/mayan/apps/document_states/models.py @@ -1,22 +1,31 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging from django.conf import settings +from django.core.exceptions import PermissionDenied, ValidationError from django.core.urlresolvers import reverse from django.db import IntegrityError, models from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ +from acls.models import AccessControlList from documents.models import Document, DocumentType +from permissions import Permission from .managers import WorkflowManager +from .permissions import permission_workflow_transition logger = logging.getLogger(__name__) @python_2_unicode_compatible class Workflow(models.Model): + """ + Fields: + * label - Identifier. A name/label to call the workflow + """ + label = models.CharField( max_length=255, unique=True, verbose_name=_('Label') ) @@ -55,12 +64,23 @@ class Workflow(models.Model): ) class Meta: + ordering = ('label',) verbose_name = _('Workflow') verbose_name_plural = _('Workflows') @python_2_unicode_compatible class WorkflowState(models.Model): + """ + Fields: + * completion - Completion Amount - A user defined numerical value to help + determine if the workflow of the document is nearing completion (100%). + The Completion Amount will be determined by the completion value of the + Actual State. Example: If the workflow has 3 states: registered, approved, + archived; the admin could give the follow completion values to the + states: 33%, 66%, 100%. If the Actual State of the document if approved, + the Completion Amount will show 66%. + """ workflow = models.ForeignKey( Workflow, related_name='states', verbose_name=_('Workflow') ) @@ -88,6 +108,7 @@ class WorkflowState(models.Model): return super(WorkflowState, self).save(*args, **kwargs) class Meta: + ordering = ('label',) unique_together = ('workflow', 'label') verbose_name = _('Workflow state') verbose_name_plural = _('Workflow states') @@ -113,6 +134,7 @@ class WorkflowTransition(models.Model): return self.label class Meta: + ordering = ('label',) unique_together = ( 'workflow', 'label', 'origin_state', 'destination_state' ) @@ -148,6 +170,12 @@ class WorkflowInstance(models.Model): pass def get_current_state(self): + """ + Actual State - The current state of the workflow. If there are + multiple states available, for example: registered, approved, + archived; this field will tell at the current state where the + document is right now. + """ try: return self.get_last_transition().destination_state except AttributeError: @@ -160,13 +188,58 @@ class WorkflowInstance(models.Model): return None def get_last_transition(self): + """ + Last Transition - The last transition used by the last user to put + the document in the actual state. + """ try: return self.get_last_log_entry().transition except AttributeError: return None - def get_transition_choices(self): - return self.get_current_state().origin_transitions.all() + def get_transition_choices(self, _user=None): + current_state = self.get_current_state() + + if current_state: + queryset = current_state.origin_transitions.all() + + if _user: + try: + Permission.check_permissions( + requester=_user, permissions=( + permission_workflow_transition, + ) + ) + except PermissionDenied: + try: + """ + Check for ACL access to the workflow, if true, allow + all transition options. + """ + + AccessControlList.objects.check_access( + permissions=permission_workflow_transition, + user=_user, obj=self.workflow + ) + except PermissionDenied: + """ + If not ACL access to the workflow, filter transition + options by each transition ACL access + """ + + queryset = AccessControlList.objects.filter_by_access( + permission=permission_workflow_transition, + user=_user, queryset=queryset + ) + return queryset + else: + """ + This happens when a workflow has no initial state and a document + whose document type has this workflow is created. We return an + empty transition queryset. + """ + + return WorkflowTransition.objects.none() class Meta: unique_together = ('document', 'workflow') @@ -176,6 +249,13 @@ class WorkflowInstance(models.Model): @python_2_unicode_compatible class WorkflowInstanceLogEntry(models.Model): + """ + Fields: + * user - The user who last transitioned the document from a state to the + Actual State. + * datetime - Date Time - The date and time when the last user transitioned + the document state to the Actual state. + """ workflow_instance = models.ForeignKey( WorkflowInstance, related_name='log_entries', verbose_name=_('Workflow instance') @@ -195,3 +275,21 @@ class WorkflowInstanceLogEntry(models.Model): class Meta: verbose_name = _('Workflow instance log entry') verbose_name_plural = _('Workflow instance log entries') + + def clean(self): + if self.transition not in self.workflow_instance.get_transition_choices(_user=self.user): + raise ValidationError(_('Not a valid transition choice.')) + + +class WorkflowRuntimeProxy(Workflow): + class Meta: + proxy = True + verbose_name = _('Workflow runtime proxy') + verbose_name_plural = _('Workflow runtime proxies') + + +class WorkflowStateRuntimeProxy(WorkflowState): + class Meta: + proxy = True + verbose_name = _('Workflow state runtime proxy') + verbose_name_plural = _('Workflow state runtime proxies') diff --git a/mayan/apps/document_states/permissions.py b/mayan/apps/document_states/permissions.py index c992864d20..470c196a41 100644 --- a/mayan/apps/document_states/permissions.py +++ b/mayan/apps/document_states/permissions.py @@ -22,6 +22,8 @@ permission_workflow_view = namespace.add_permission( # 'transition workflows' from one state to another, to move the workflow # forwards permission_workflow_transition = namespace.add_permission( - name='workflow_transition', - label=_('Transition workflows') + name='workflow_transition', label=_('Transition workflows') +) +permission_workflow_tools = namespace.add_permission( + name='workflow_tools', label=_('Execute workflow tools') ) diff --git a/mayan/apps/document_states/serializers.py b/mayan/apps/document_states/serializers.py new file mode 100644 index 0000000000..3a0daf4ab2 --- /dev/null +++ b/mayan/apps/document_states/serializers.py @@ -0,0 +1,354 @@ +from __future__ import unicode_literals + +from django.core.exceptions import ValidationError as DjangoValidationError +from django.utils.translation import ugettext_lazy as _ + +from rest_framework import serializers +from rest_framework.exceptions import ValidationError +from rest_framework.reverse import reverse + +from documents.models import DocumentType +from documents.serializers import DocumentTypeSerializer +from user_management.serializers import UserSerializer + +from .models import ( + Workflow, WorkflowInstance, WorkflowInstanceLogEntry, WorkflowState, + WorkflowTransition +) + + +class NewWorkflowDocumentTypeSerializer(serializers.Serializer): + document_type_pk = serializers.IntegerField( + help_text=_('Primary key of the document type to be added.') + ) + + def create(self, validated_data): + document_type = DocumentType.objects.get( + pk=validated_data['document_type_pk'] + ) + self.context['workflow'].document_types.add(document_type) + + return validated_data + + +class WorkflowDocumentTypeSerializer(DocumentTypeSerializer): + workflow_document_type_url = serializers.SerializerMethodField( + help_text=_( + 'API URL pointing to a document type in relation to the ' + 'workflow to which it is attached. This URL is different than ' + 'the canonical document type URL.' + ) + ) + + class Meta(DocumentTypeSerializer.Meta): + fields = DocumentTypeSerializer.Meta.fields + ( + 'workflow_document_type_url', + ) + read_only_fields = DocumentTypeSerializer.Meta.fields + + def get_workflow_document_type_url(self, instance): + return reverse( + 'rest_api:workflow-document-type-detail', args=( + self.context['workflow'].pk, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + + +class WorkflowStateSerializer(serializers.HyperlinkedModelSerializer): + url = serializers.SerializerMethodField() + workflow_url = serializers.SerializerMethodField() + + class Meta: + fields = ( + 'completion', 'id', 'initial', 'label', 'url', 'workflow_url', + ) + model = WorkflowState + + def create(self, validated_data): + validated_data['workflow'] = self.context['workflow'] + return super(WorkflowStateSerializer, self).create(validated_data) + + def get_url(self, instance): + return reverse( + 'rest_api:workflowstate-detail', args=( + instance.workflow.pk, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + + def get_workflow_url(self, instance): + return reverse( + 'rest_api:workflow-detail', args=( + instance.workflow.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + +class WorkflowTransitionSerializer(serializers.HyperlinkedModelSerializer): + destination_state = WorkflowStateSerializer() + origin_state = WorkflowStateSerializer() + url = serializers.SerializerMethodField() + workflow_url = serializers.SerializerMethodField() + + class Meta: + fields = ( + 'destination_state', 'id', 'label', 'origin_state', 'url', + 'workflow_url', + ) + model = WorkflowTransition + + def get_url(self, instance): + return reverse( + 'rest_api:workflowtransition-detail', args=( + instance.workflow.pk, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + + def get_workflow_url(self, instance): + return reverse( + 'rest_api:workflow-detail', args=( + instance.workflow.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + +class WritableWorkflowTransitionSerializer(serializers.ModelSerializer): + destination_state_pk = serializers.IntegerField( + help_text=_('Primary key of the destination state to be added.'), + write_only=True + ) + origin_state_pk = serializers.IntegerField( + help_text=_('Primary key of the origin state to be added.'), + write_only=True + ) + url = serializers.SerializerMethodField() + workflow_url = serializers.SerializerMethodField() + + class Meta: + fields = ( + 'destination_state_pk', 'id', 'label', 'origin_state_pk', 'url', + 'workflow_url', + ) + model = WorkflowTransition + + def create(self, validated_data): + validated_data['destination_state'] = WorkflowState.objects.get( + pk=validated_data.pop('destination_state_pk') + ) + validated_data['origin_state'] = WorkflowState.objects.get( + pk=validated_data.pop('origin_state_pk') + ) + + validated_data['workflow'] = self.context['workflow'] + return super(WritableWorkflowTransitionSerializer, self).create( + validated_data + ) + + def get_url(self, instance): + return reverse( + 'rest_api:workflowtransition-detail', args=( + instance.workflow.pk, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + + def get_workflow_url(self, instance): + return reverse( + 'rest_api:workflow-detail', args=( + instance.workflow.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + def update(self, instance, validated_data): + validated_data['destination_state'] = WorkflowState.objects.get( + pk=validated_data.pop('destination_state_pk') + ) + validated_data['origin_state'] = WorkflowState.objects.get( + pk=validated_data.pop('origin_state_pk') + ) + + return super(WritableWorkflowTransitionSerializer, self).update( + instance, validated_data + ) + + +class WorkflowSerializer(serializers.HyperlinkedModelSerializer): + document_types_url = serializers.HyperlinkedIdentityField( + view_name='rest_api:workflow-document-type-list' + ) + states = WorkflowStateSerializer(many=True, required=False) + transitions = WorkflowTransitionSerializer(many=True, required=False) + + class Meta: + extra_kwargs = { + 'url': {'view_name': 'rest_api:workflow-detail'}, + } + fields = ( + 'document_types_url', 'id', 'label', 'states', 'transitions', + 'url' + ) + model = Workflow + + +class WorkflowInstanceLogEntrySerializer(serializers.ModelSerializer): + document_workflow_url = serializers.SerializerMethodField() + transition = WorkflowTransitionSerializer(read_only=True) + user = UserSerializer(read_only=True) + + class Meta: + fields = ( + 'comment', 'datetime', 'document_workflow_url', 'transition', + 'user' + ) + model = WorkflowInstanceLogEntry + + def get_document_workflow_url(self, instance): + return reverse( + 'rest_api:workflowinstance-detail', args=( + instance.workflow_instance.document.pk, + instance.workflow_instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + +class WorkflowInstanceSerializer(serializers.ModelSerializer): + current_state = WorkflowStateSerializer( + read_only=True, source='get_current_state' + ) + document_workflow_url = serializers.SerializerMethodField( + help_text=_( + 'API URL pointing to a workflow in relation to the ' + 'document to which it is attached. This URL is different than ' + 'the canonical workflow URL.' + ) + ) + last_log_entry = WorkflowInstanceLogEntrySerializer( + read_only=True, source='get_last_log_entry' + ) + log_entries_url = serializers.SerializerMethodField( + help_text=_('A link to the entire history of this workflow.') + ) + transition_choices = WorkflowTransitionSerializer( + many=True, read_only=True, source='get_transition_choices' + ) + workflow = WorkflowSerializer(read_only=True) + + class Meta: + fields = ( + 'current_state', 'document_workflow_url', 'last_log_entry', + 'log_entries_url', 'transition_choices', 'workflow', + ) + model = WorkflowInstance + + def get_document_workflow_url(self, instance): + return reverse( + 'rest_api:workflowinstance-detail', args=( + instance.document.pk, instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + def get_log_entries_url(self, instance): + return reverse( + 'rest_api:workflowinstancelogentry-list', args=( + instance.document.pk, instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + +class WritableWorkflowSerializer(serializers.ModelSerializer): + document_types_pk_list = serializers.CharField( + help_text=_( + 'Comma separated list of document type primary keys to which this ' + 'workflow will be attached.' + ), required=False + ) + + class Meta: + extra_kwargs = { + 'url': {'view_name': 'rest_api:workflow-detail'}, + } + fields = ( + 'document_types_pk_list', 'label', 'id', 'url', + ) + model = Workflow + + def _add_document_types(self, document_types_pk_list, instance): + instance.document_types.add( + *DocumentType.objects.filter( + pk__in=document_types_pk_list.split(',') + ) + ) + + def create(self, validated_data): + document_types_pk_list = validated_data.pop( + 'document_types_pk_list', '' + ) + + instance = super(WritableWorkflowSerializer, self).create( + validated_data + ) + + if document_types_pk_list: + self._add_document_types( + document_types_pk_list=document_types_pk_list, + instance=instance + ) + + return instance + + def update(self, instance, validated_data): + document_types_pk_list = validated_data.pop( + 'document_types_pk_list', '' + ) + + instance = super(WritableWorkflowSerializer, self).update( + instance, validated_data + ) + + if document_types_pk_list: + instance.documents.clear() + self._add_documents( + document_types_pk_list=document_types_pk_list, + instance=instance + ) + + return instance + + +class WritableWorkflowInstanceLogEntrySerializer(serializers.ModelSerializer): + document_workflow_url = serializers.SerializerMethodField() + transition_pk = serializers.IntegerField( + help_text=_('Primary key of the transition to be added.'), + write_only=True + ) + transition = WorkflowTransitionSerializer(read_only=True) + user = UserSerializer(read_only=True) + + class Meta: + fields = ( + 'comment', 'datetime', 'document_workflow_url', 'transition', + 'transition_pk', 'user' + ) + model = WorkflowInstanceLogEntry + + def get_document_workflow_url(self, instance): + return reverse( + 'rest_api:workflowinstance-detail', args=( + instance.workflow_instance.document.pk, + instance.workflow_instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + def validate(self, attrs): + attrs['user'] = self.context['request'].user + attrs['workflow_instance'] = self.context['workflow_instance'] + attrs['transition'] = WorkflowTransition.objects.get( + pk=attrs.pop('transition_pk') + ) + + instance = WorkflowInstanceLogEntry(**attrs) + + try: + instance.full_clean() + except DjangoValidationError as exception: + raise ValidationError(exception) + + return attrs diff --git a/mayan/apps/document_states/tasks.py b/mayan/apps/document_states/tasks.py new file mode 100644 index 0000000000..ec550c27b3 --- /dev/null +++ b/mayan/apps/document_states/tasks.py @@ -0,0 +1,24 @@ +from __future__ import unicode_literals + +import logging + +from django.apps import apps + +from mayan.celery import app + +logger = logging.getLogger(__name__) + + +@app.task(ignore_result=True) +def task_launch_all_workflows(): + Document = apps.get_model(app_label='documents', model_name='Document') + Workflow = apps.get_model( + app_label='document_states', model_name='Workflow' + ) + + logger.info('Start launching workflows') + for document in Document.objects.all(): + print 'document :', document + Workflow.objects.launch_for(document=document) + + logger.info('Finished launching workflows') diff --git a/mayan/apps/document_states/tests/literals.py b/mayan/apps/document_states/tests/literals.py index c8fa5f52d8..004d17de8d 100644 --- a/mayan/apps/document_states/tests/literals.py +++ b/mayan/apps/document_states/tests/literals.py @@ -1,8 +1,13 @@ from __future__ import unicode_literals -TEST_WORKFLOW_LABEL = 'test workflow' +TEST_WORKFLOW_LABEL = 'test workflow label' +TEST_WORKFLOW_LABEL_EDITED = 'test workflow label edited' TEST_WORKFLOW_INITIAL_STATE_LABEL = 'test initial state' TEST_WORKFLOW_INITIAL_STATE_COMPLETION = 33 -TEST_WORKFLOW_STATE_LABEL = 'test state' +TEST_WORKFLOW_INSTANCE_LOG_ENTRY_COMMENT = 'test workflow instance log entry comment' +TEST_WORKFLOW_STATE_LABEL = 'test state label' +TEST_WORKFLOW_STATE_LABEL_EDITED = 'test state label edited' TEST_WORKFLOW_STATE_COMPLETION = 66 -TEST_WORKFLOW_TRANSITION_LABEL = 'test transtition' +TEST_WORKFLOW_TRANSITION_LABEL = 'test transition label' +TEST_WORKFLOW_TRANSITION_LABEL_2 = 'test transition label 2' +TEST_WORKFLOW_TRANSITION_LABEL_EDITED = 'test transition label edited' diff --git a/mayan/apps/document_states/tests/test_api.py b/mayan/apps/document_states/tests/test_api.py new file mode 100644 index 0000000000..a29dfe8c7e --- /dev/null +++ b/mayan/apps/document_states/tests/test_api.py @@ -0,0 +1,796 @@ +from __future__ import absolute_import, unicode_literals + +from django.contrib.auth import get_user_model +from django.contrib.auth.models import Group +from django.core.urlresolvers import reverse +from django.test import override_settings + +from rest_framework.test import APITestCase + +from acls.models import AccessControlList +from documents.models import DocumentType +from documents.tests.literals import ( + TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +) +from permissions import Permission +from permissions.models import Role +from permissions.tests.literals import TEST_ROLE_LABEL +from rest_api.tests import BaseAPITestCase +from user_management.tests import ( + TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, + TEST_GROUP_NAME, TEST_USER_EMAIL, TEST_USER_USERNAME, TEST_USER_PASSWORD +) + +from ..models import Workflow +from ..permissions import permission_workflow_transition + +from .literals import ( + TEST_WORKFLOW_LABEL, TEST_WORKFLOW_LABEL_EDITED, + TEST_WORKFLOW_INITIAL_STATE_COMPLETION, TEST_WORKFLOW_INITIAL_STATE_LABEL, + TEST_WORKFLOW_INSTANCE_LOG_ENTRY_COMMENT, TEST_WORKFLOW_STATE_COMPLETION, + TEST_WORKFLOW_STATE_LABEL, TEST_WORKFLOW_STATE_LABEL_EDITED, + TEST_WORKFLOW_TRANSITION_LABEL, TEST_WORKFLOW_TRANSITION_LABEL_EDITED +) + + +@override_settings(OCR_AUTO_OCR=False) +class WorkflowAPITestCase(BaseAPITestCase): + def setUp(self): + super(WorkflowAPITestCase, self).setUp() + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object + ) + + def tearDown(self): + if hasattr(self, 'document_type'): + self.document_type.delete() + super(WorkflowAPITestCase, self).tearDown() + + def _create_workflow(self): + return Workflow.objects.create(label=TEST_WORKFLOW_LABEL) + + def test_workflow_create_view(self): + response = self.client.post( + reverse('rest_api:workflow-list'), { + 'label': TEST_WORKFLOW_LABEL + } + ) + + workflow = Workflow.objects.first() + self.assertEqual(Workflow.objects.count(), 1) + self.assertEqual(response.data['id'], workflow.pk) + + def test_workflow_create_with_document_type_view(self): + response = self.client.post( + reverse('rest_api:workflow-list'), { + 'label': TEST_WORKFLOW_LABEL, + 'document_types_pk_list': '{}'.format(self.document_type.pk) + } + ) + + workflow = Workflow.objects.first() + self.assertEqual(Workflow.objects.count(), 1) + self.assertQuerysetEqual( + workflow.document_types.all(), (repr(self.document_type),) + ) + self.assertEqual(response.data['id'], workflow.pk) + + def test_workflow_delete_view(self): + workflow = self._create_workflow() + + self.client.delete( + reverse('rest_api:workflow-detail', args=(workflow.pk,)) + ) + + self.assertEqual(Workflow.objects.count(), 0) + + def test_workflow_detail_view(self): + workflow = self._create_workflow() + + response = self.client.get( + reverse('rest_api:workflow-detail', args=(workflow.pk,)) + ) + + self.assertEqual(response.data['label'], workflow.label) + + def test_workflow_document_type_create_view(self): + workflow = self._create_workflow() + + self.client.post( + reverse( + 'rest_api:workflow-document-type-list', + args=(workflow.pk,) + ), data={'document_type_pk': self.document_type.pk} + ) + + self.assertQuerysetEqual( + workflow.document_types.all(), (repr(self.document_type),) + ) + + def test_workflow_document_type_delete_view(self): + workflow = self._create_workflow() + workflow.document_types.add(self.document_type) + + self.client.delete( + reverse( + 'rest_api:workflow-document-type-detail', + args=(workflow.pk, self.document_type.pk) + ) + ) + + workflow.refresh_from_db() + self.assertQuerysetEqual(workflow.document_types.all(), ()) + # The workflow document type entry was deleted and not the document + # type itself. + self.assertQuerysetEqual( + DocumentType.objects.all(), (repr(self.document_type),) + ) + + def test_workflow_document_type_detail_view(self): + workflow = self._create_workflow() + workflow.document_types.add(self.document_type) + + response = self.client.get( + reverse( + 'rest_api:workflow-document-type-detail', + args=(workflow.pk, self.document_type.pk) + ) + ) + + self.assertEqual(response.data['label'], self.document_type.label) + + def test_workflow_document_type_list_view(self): + workflow = self._create_workflow() + workflow.document_types.add(self.document_type) + + response = self.client.get( + reverse( + 'rest_api:workflow-document-type-list', args=(workflow.pk,) + ) + ) + + self.assertEqual( + response.data['results'][0]['label'], self.document_type.label + ) + + def test_workflow_list_view(self): + workflow = self._create_workflow() + + response = self.client.get(reverse('rest_api:workflow-list')) + + self.assertEqual(response.data['results'][0]['label'], workflow.label) + + def test_workflow_put_view(self): + workflow = self._create_workflow() + + self.client.put( + reverse('rest_api:workflow-detail', args=(workflow.pk,)), + data={'label': TEST_WORKFLOW_LABEL_EDITED} + ) + + workflow.refresh_from_db() + self.assertEqual(workflow.label, TEST_WORKFLOW_LABEL_EDITED) + + def test_workflow_patch_view(self): + workflow = self._create_workflow() + + self.client.patch( + reverse('rest_api:workflow-detail', args=(workflow.pk,)), + data={'label': TEST_WORKFLOW_LABEL_EDITED} + ) + + workflow.refresh_from_db() + self.assertEqual(workflow.label, TEST_WORKFLOW_LABEL_EDITED) + + def test_document_type_workflow_list(self): + workflow = self._create_workflow() + workflow.document_types.add(self.document_type) + + response = self.client.get( + reverse( + 'rest_api:documenttype-workflow-list', + args=(self.document_type.pk,) + ), + ) + + self.assertEqual(response.data['results'][0]['label'], workflow.label) + + +@override_settings(OCR_AUTO_OCR=False) +class WorkflowStatesAPITestCase(BaseAPITestCase): + def setUp(self): + super(WorkflowStatesAPITestCase, self).setUp() + + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object + ) + + def tearDown(self): + if hasattr(self, 'document_type'): + self.document_type.delete() + super(WorkflowStatesAPITestCase, self).tearDown() + + def _create_workflow(self): + self.workflow = Workflow.objects.create(label=TEST_WORKFLOW_LABEL) + + def _create_workflow_state(self): + self._create_workflow() + self.workflow_state = self.workflow.states.create( + completion=TEST_WORKFLOW_STATE_COMPLETION, + label=TEST_WORKFLOW_STATE_LABEL + ) + + def test_workflow_state_create_view(self): + self._create_workflow() + + self.client.post( + reverse( + 'rest_api:workflowstate-list', args=(self.workflow.pk,) + ), data={ + 'completion': TEST_WORKFLOW_STATE_COMPLETION, + 'label': TEST_WORKFLOW_STATE_LABEL + } + ) + + self.workflow.refresh_from_db() + + self.assertEqual( + self.workflow.states.first().label, TEST_WORKFLOW_STATE_LABEL + ) + + def test_workflow_state_delete_view(self): + self._create_workflow_state() + + self.client.delete( + reverse( + 'rest_api:workflowstate-detail', + args=(self.workflow.pk, self.workflow_state.pk) + ), + ) + + self.workflow.refresh_from_db() + + self.assertEqual(self.workflow.states.count(), 0) + + def test_workflow_state_detail_view(self): + self._create_workflow_state() + + response = self.client.get( + reverse( + 'rest_api:workflowstate-detail', + args=(self.workflow.pk, self.workflow_state.pk) + ), + ) + + self.assertEqual( + response.data['label'], TEST_WORKFLOW_STATE_LABEL + ) + + def test_workflow_state_list_view(self): + self._create_workflow_state() + + response = self.client.get( + reverse('rest_api:workflowstate-list', args=(self.workflow.pk,)), + ) + + self.assertEqual( + response.data['results'][0]['label'], TEST_WORKFLOW_STATE_LABEL + ) + + def test_workflow_state_patch_view(self): + self._create_workflow_state() + + self.client.patch( + reverse( + 'rest_api:workflowstate-detail', + args=(self.workflow.pk, self.workflow_state.pk) + ), + data={'label': TEST_WORKFLOW_STATE_LABEL_EDITED} + ) + + self.workflow_state.refresh_from_db() + + self.assertEqual( + self.workflow_state.label, + TEST_WORKFLOW_STATE_LABEL_EDITED + ) + + def test_workflow_state_put_view(self): + self._create_workflow_state() + + self.client.put( + reverse( + 'rest_api:workflowstate-detail', + args=(self.workflow.pk, self.workflow_state.pk) + ), + data={'label': TEST_WORKFLOW_STATE_LABEL_EDITED} + ) + + self.workflow_state.refresh_from_db() + + self.assertEqual( + self.workflow_state.label, + TEST_WORKFLOW_STATE_LABEL_EDITED + ) + + +@override_settings(OCR_AUTO_OCR=False) +class WorkflowTransitionsAPITestCase(BaseAPITestCase): + def setUp(self): + super(WorkflowTransitionsAPITestCase, self).setUp() + + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object + ) + + def tearDown(self): + if hasattr(self, 'document_type'): + self.document_type.delete() + super(WorkflowTransitionsAPITestCase, self).tearDown() + + def _create_workflow(self): + self.workflow = Workflow.objects.create(label=TEST_WORKFLOW_LABEL) + + def _create_workflow_states(self): + self._create_workflow() + self.workflow_state_1 = self.workflow.states.create( + completion=TEST_WORKFLOW_INITIAL_STATE_COMPLETION, + label=TEST_WORKFLOW_INITIAL_STATE_LABEL + ) + self.workflow_state_2 = self.workflow.states.create( + completion=TEST_WORKFLOW_STATE_COMPLETION, + label=TEST_WORKFLOW_STATE_LABEL + ) + + def _create_workflow_transition(self): + self._create_workflow_states() + self.workflow_transition = self.workflow.transitions.create( + label=TEST_WORKFLOW_TRANSITION_LABEL, + origin_state=self.workflow_state_1, + destination_state=self.workflow_state_2, + ) + + def test_workflow_transition_create_view(self): + self._create_workflow_states() + + self.client.post( + reverse( + 'rest_api:workflowtransition-list', args=(self.workflow.pk,) + ), data={ + 'label': TEST_WORKFLOW_TRANSITION_LABEL, + 'origin_state_pk': self.workflow_state_1.pk, + 'destination_state_pk': self.workflow_state_2.pk, + } + ) + + self.workflow.refresh_from_db() + + self.assertEqual( + self.workflow.transitions.first().label, + TEST_WORKFLOW_TRANSITION_LABEL + ) + + def test_workflow_transition_delete_view(self): + self._create_workflow_transition() + + self.client.delete( + reverse( + 'rest_api:workflowtransition-detail', + args=(self.workflow.pk, self.workflow_transition.pk) + ), + ) + + self.workflow.refresh_from_db() + + self.assertEqual(self.workflow.transitions.count(), 0) + + def test_workflow_transition_detail_view(self): + self._create_workflow_transition() + + response = self.client.get( + reverse( + 'rest_api:workflowtransition-detail', + args=(self.workflow.pk, self.workflow_transition.pk) + ), + ) + + self.assertEqual( + response.data['label'], TEST_WORKFLOW_TRANSITION_LABEL + ) + + def test_workflow_transition_list_view(self): + self._create_workflow_transition() + + response = self.client.get( + reverse( + 'rest_api:workflowtransition-list', args=(self.workflow.pk,) + ), + ) + + self.assertEqual( + response.data['results'][0]['label'], + TEST_WORKFLOW_TRANSITION_LABEL + ) + + def test_workflow_transition_patch_view(self): + self._create_workflow_transition() + + self.client.patch( + reverse( + 'rest_api:workflowtransition-detail', + args=(self.workflow.pk, self.workflow_transition.pk) + ), + data={ + 'label': TEST_WORKFLOW_TRANSITION_LABEL_EDITED, + 'origin_state_pk': self.workflow_state_2.pk, + 'destination_state_pk': self.workflow_state_1.pk, + } + ) + + self.workflow_transition.refresh_from_db() + + self.assertEqual( + self.workflow_transition.label, + TEST_WORKFLOW_TRANSITION_LABEL_EDITED + ) + self.assertEqual( + self.workflow_transition.origin_state, + self.workflow_state_2 + ) + self.assertEqual( + self.workflow_transition.destination_state, + self.workflow_state_1 + ) + + def test_workflow_transition_put_view(self): + self._create_workflow_transition() + + self.client.put( + reverse( + 'rest_api:workflowtransition-detail', + args=(self.workflow.pk, self.workflow_transition.pk) + ), + data={ + 'label': TEST_WORKFLOW_TRANSITION_LABEL_EDITED, + 'origin_state_pk': self.workflow_state_2.pk, + 'destination_state_pk': self.workflow_state_1.pk, + } + ) + + self.workflow_transition.refresh_from_db() + + self.assertEqual( + self.workflow_transition.label, + TEST_WORKFLOW_TRANSITION_LABEL_EDITED + ) + self.assertEqual( + self.workflow_transition.origin_state, + self.workflow_state_2 + ) + self.assertEqual( + self.workflow_transition.destination_state, + self.workflow_state_1 + ) + + +@override_settings(OCR_AUTO_OCR=False) +class DocumentWorkflowsAPITestCase(BaseAPITestCase): + def setUp(self): + super(DocumentWorkflowsAPITestCase, self).setUp() + + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + def tearDown(self): + if hasattr(self, 'document_type'): + self.document_type.delete() + super(DocumentWorkflowsAPITestCase, self).tearDown() + + def _create_document(self): + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object + ) + + def _create_workflow(self): + self.workflow = Workflow.objects.create(label=TEST_WORKFLOW_LABEL) + self.workflow.document_types.add(self.document_type) + + def _create_workflow_states(self): + self._create_workflow() + self.workflow_state_1 = self.workflow.states.create( + completion=TEST_WORKFLOW_INITIAL_STATE_COMPLETION, + initial=True, label=TEST_WORKFLOW_INITIAL_STATE_LABEL + ) + self.workflow_state_2 = self.workflow.states.create( + completion=TEST_WORKFLOW_STATE_COMPLETION, + label=TEST_WORKFLOW_STATE_LABEL + ) + + def _create_workflow_transition(self): + self._create_workflow_states() + self.workflow_transition = self.workflow.transitions.create( + label=TEST_WORKFLOW_TRANSITION_LABEL, + origin_state=self.workflow_state_1, + destination_state=self.workflow_state_2, + ) + + def _create_workflow_instance_log_entry(self): + self.document.workflows.first().log_entries.create( + comment=TEST_WORKFLOW_INSTANCE_LOG_ENTRY_COMMENT, transition=self.workflow_transition, + user=self.admin_user + ) + + def test_workflow_instance_detail_view(self): + self._create_workflow_transition() + self._create_document() + + response = self.client.get( + reverse( + 'rest_api:workflowinstance-detail', args=( + self.document.pk, self.document.workflows.first().pk + ) + ), + ) + + self.assertEqual( + response.data['workflow']['label'], + TEST_WORKFLOW_LABEL + ) + + def test_workflow_instance_list_view(self): + self._create_workflow_transition() + self._create_document() + + response = self.client.get( + reverse( + 'rest_api:workflowinstance-list', args=(self.document.pk,) + ), + ) + + self.assertEqual( + response.data['results'][0]['workflow']['label'], + TEST_WORKFLOW_LABEL + ) + + def test_workflow_instance_log_entries_create_view(self): + self._create_workflow_transition() + self._create_document() + + workflow_instance = self.document.workflows.first() + + self.client.post( + reverse( + 'rest_api:workflowinstancelogentry-list', args=( + self.document.pk, workflow_instance.pk + ), + ), data={'transition_pk': self.workflow_transition.pk} + ) + + workflow_instance.refresh_from_db() + + self.assertEqual( + workflow_instance.log_entries.first().transition.label, + TEST_WORKFLOW_TRANSITION_LABEL + ) + + def test_workflow_instance_log_entries_list_view(self): + self._create_workflow_transition() + self._create_document() + self._create_workflow_instance_log_entry() + + response = self.client.get( + reverse( + 'rest_api:workflowinstancelogentry-list', args=( + self.document.pk, self.document.workflows.first().pk + ) + ), + ) + + self.assertEqual( + response.data['results'][0]['transition']['label'], + TEST_WORKFLOW_TRANSITION_LABEL + ) + + +@override_settings(OCR_AUTO_OCR=False) +class DocumentWorkflowsTransitionACLsAPITestCase(APITestCase): + def setUp(self): + self.user = get_user_model().objects.create_user( + username=TEST_USER_USERNAME, email=TEST_USER_EMAIL, + password=TEST_USER_PASSWORD + ) + + self.client.login( + username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD + ) + + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + self.group = Group.objects.create(name=TEST_GROUP_NAME) + self.role = Role.objects.create(label=TEST_ROLE_LABEL) + self.group.user_set.add(self.user) + self.role.groups.add(self.group) + Permission.invalidate_cache() + + def tearDown(self): + if hasattr(self, 'document_type'): + self.document_type.delete() + + def _create_document(self): + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object + ) + + def _create_workflow(self): + self.workflow = Workflow.objects.create(label=TEST_WORKFLOW_LABEL) + self.workflow.document_types.add(self.document_type) + + def _create_workflow_states(self): + self._create_workflow() + self.workflow_state_1 = self.workflow.states.create( + completion=TEST_WORKFLOW_INITIAL_STATE_COMPLETION, + initial=True, label=TEST_WORKFLOW_INITIAL_STATE_LABEL + ) + self.workflow_state_2 = self.workflow.states.create( + completion=TEST_WORKFLOW_STATE_COMPLETION, + label=TEST_WORKFLOW_STATE_LABEL + ) + + def _create_workflow_transition(self): + self._create_workflow_states() + self.workflow_transition = self.workflow.transitions.create( + label=TEST_WORKFLOW_TRANSITION_LABEL, + origin_state=self.workflow_state_1, + destination_state=self.workflow_state_2, + ) + + def test_workflow_transition_view_no_permission(self): + self._create_workflow_transition() + self._create_document() + + workflow_instance = self.document.workflows.first() + + self.client.post( + reverse( + 'rest_api:workflowinstancelogentry-list', args=( + self.document.pk, workflow_instance.pk + ), + ), data={'transition_pk': self.workflow_transition.pk} + ) + + workflow_instance.refresh_from_db() + + self.assertEqual(workflow_instance.log_entries.count(), 0) + + def test_workflow_transition_view_with_permission(self): + self._create_workflow_transition() + self._create_document() + + workflow_instance = self.document.workflows.first() + + self.role.permissions.add( + permission_workflow_transition.stored_permission + ) + + self.client.post( + reverse( + 'rest_api:workflowinstancelogentry-list', args=( + self.document.pk, workflow_instance.pk + ), + ), data={'transition_pk': self.workflow_transition.pk} + ) + + workflow_instance.refresh_from_db() + + self.assertEqual( + workflow_instance.log_entries.first().transition.label, + TEST_WORKFLOW_TRANSITION_LABEL + ) + + def test_workflow_transition_view_with_workflow_acl(self): + self._create_workflow_transition() + self._create_document() + + workflow_instance = self.document.workflows.first() + + acl = AccessControlList.objects.create( + content_object=self.workflow, role=self.role + ) + acl.permissions.add(permission_workflow_transition.stored_permission) + + self.client.post( + reverse( + 'rest_api:workflowinstancelogentry-list', args=( + self.document.pk, workflow_instance.pk + ), + ), data={'transition_pk': self.workflow_transition.pk} + ) + + workflow_instance.refresh_from_db() + + self.assertEqual( + workflow_instance.log_entries.first().transition.label, + TEST_WORKFLOW_TRANSITION_LABEL + ) + + def test_workflow_transition_view_transition_acl(self): + self._create_workflow_transition() + self._create_document() + + workflow_instance = self.document.workflows.first() + + acl = AccessControlList.objects.create( + content_object=self.workflow_transition, role=self.role + ) + acl.permissions.add(permission_workflow_transition.stored_permission) + + self.client.post( + reverse( + 'rest_api:workflowinstancelogentry-list', args=( + self.document.pk, workflow_instance.pk + ), + ), data={'transition_pk': self.workflow_transition.pk} + ) + + workflow_instance.refresh_from_db() + + self.assertEqual( + workflow_instance.log_entries.first().transition.label, + TEST_WORKFLOW_TRANSITION_LABEL + ) diff --git a/mayan/apps/document_states/tests/test_views.py b/mayan/apps/document_states/tests/test_views.py index 251f127f21..a2a02c24e3 100644 --- a/mayan/apps/document_states/tests/test_views.py +++ b/mayan/apps/document_states/tests/test_views.py @@ -1,13 +1,20 @@ from __future__ import unicode_literals +from acls.models import AccessControlList from common.tests.test_views import GenericViewTestCase +from documents.tests.literals import TEST_SMALL_DOCUMENT_PATH +from documents.tests.test_views import GenericDocumentViewTestCase from ..models import Workflow, WorkflowState, WorkflowTransition +from ..permissions import ( + permission_workflow_tools, permission_workflow_transition +) from .literals import ( TEST_WORKFLOW_LABEL, TEST_WORKFLOW_INITIAL_STATE_LABEL, TEST_WORKFLOW_INITIAL_STATE_COMPLETION, TEST_WORKFLOW_STATE_LABEL, - TEST_WORKFLOW_STATE_COMPLETION, TEST_WORKFLOW_TRANSITION_LABEL + TEST_WORKFLOW_STATE_COMPLETION, TEST_WORKFLOW_TRANSITION_LABEL, + TEST_WORKFLOW_TRANSITION_LABEL_2 ) @@ -17,6 +24,26 @@ class DocumentStateViewTestCase(GenericViewTestCase): self.login_admin_user() + def _create_workflow(self): + self.workflow = Workflow.objects.create(label=TEST_WORKFLOW_LABEL) + + def _create_workflow_states(self): + self.workflow_initial_state = WorkflowState.objects.create( + workflow=self.workflow, label=TEST_WORKFLOW_INITIAL_STATE_LABEL, + completion=TEST_WORKFLOW_INITIAL_STATE_COMPLETION, initial=True + ) + self.workflow_state = WorkflowState.objects.create( + workflow=self.workflow, label=TEST_WORKFLOW_STATE_LABEL, + completion=TEST_WORKFLOW_STATE_COMPLETION + ) + + def _create_workflow_transition(self): + self.workflow_transition = WorkflowTransition.objects.create( + workflow=self.workflow, label=TEST_WORKFLOW_TRANSITION_LABEL, + origin_state=self.workflow_initial_state, + destination_state=self.workflow_state + ) + def test_creating_workflow(self): response = self.post( 'document_states:setup_workflow_create', @@ -31,13 +58,10 @@ class DocumentStateViewTestCase(GenericViewTestCase): self.assertEquals(Workflow.objects.all()[0].label, TEST_WORKFLOW_LABEL) def test_delete_workflow(self): - workflow = Workflow.objects.create(label=TEST_WORKFLOW_LABEL) - - self.assertEquals(Workflow.objects.count(), 1) - self.assertEquals(Workflow.objects.all()[0].label, TEST_WORKFLOW_LABEL) + self._create_workflow() response = self.post( - 'document_states:setup_workflow_delete', args=(workflow.pk,), + 'document_states:setup_workflow_delete', args=(self.workflow.pk,), follow=True ) @@ -46,11 +70,11 @@ class DocumentStateViewTestCase(GenericViewTestCase): self.assertEquals(Workflow.objects.count(), 0) def test_create_workflow_state(self): - workflow = Workflow.objects.create(label=TEST_WORKFLOW_LABEL) + self._create_workflow() response = self.post( 'document_states:setup_workflow_state_create', - args=(workflow.pk,), + args=(self.workflow.pk,), data={ 'label': TEST_WORKFLOW_STATE_LABEL, 'completion': TEST_WORKFLOW_STATE_COMPLETION, @@ -69,39 +93,29 @@ class DocumentStateViewTestCase(GenericViewTestCase): ) def test_delete_workflow_state(self): - workflow = Workflow.objects.create(label=TEST_WORKFLOW_LABEL) - workflow_state = WorkflowState.objects.create( - workflow=workflow, label=TEST_WORKFLOW_STATE_LABEL, - completion=TEST_WORKFLOW_STATE_COMPLETION - ) + self._create_workflow() + self._create_workflow_states() response = self.post( 'document_states:setup_workflow_state_delete', - args=(workflow_state.pk,), follow=True + args=(self.workflow_state.pk,), follow=True ) self.assertEquals(response.status_code, 200) - self.assertEquals(WorkflowState.objects.count(), 0) + self.assertEquals(WorkflowState.objects.count(), 1) self.assertEquals(Workflow.objects.count(), 1) def test_create_workflow_transition(self): - workflow = Workflow.objects.create(label=TEST_WORKFLOW_LABEL) - workflow_initial_state = WorkflowState.objects.create( - workflow=workflow, label=TEST_WORKFLOW_INITIAL_STATE_LABEL, - completion=TEST_WORKFLOW_INITIAL_STATE_COMPLETION, initial=True - ) - workflow_state = WorkflowState.objects.create( - workflow=workflow, label=TEST_WORKFLOW_STATE_LABEL, - completion=TEST_WORKFLOW_STATE_COMPLETION - ) + self._create_workflow() + self._create_workflow_states() response = self.post( 'document_states:setup_workflow_transition_create', - args=(workflow.pk,), data={ + args=(self.workflow.pk,), data={ 'label': TEST_WORKFLOW_TRANSITION_LABEL, - 'origin_state': workflow_initial_state.pk, - 'destination_state': workflow_state.pk, + 'origin_state': self.workflow_initial_state.pk, + 'destination_state': self.workflow_state.pk, }, follow=True ) @@ -114,34 +128,21 @@ class DocumentStateViewTestCase(GenericViewTestCase): ) self.assertEquals( WorkflowTransition.objects.all()[0].origin_state, - workflow_initial_state + self.workflow_initial_state ) self.assertEquals( WorkflowTransition.objects.all()[0].destination_state, - workflow_state + self.workflow_state ) def test_delete_workflow_transition(self): - workflow = Workflow.objects.create(label=TEST_WORKFLOW_LABEL) - workflow_initial_state = WorkflowState.objects.create( - workflow=workflow, label=TEST_WORKFLOW_INITIAL_STATE_LABEL, - completion=TEST_WORKFLOW_INITIAL_STATE_COMPLETION, initial=True - ) - workflow_state = WorkflowState.objects.create( - workflow=workflow, label=TEST_WORKFLOW_STATE_LABEL, - completion=TEST_WORKFLOW_STATE_COMPLETION - ) - workflow_transition = WorkflowTransition.objects.create( - workflow=workflow, label=TEST_WORKFLOW_TRANSITION_LABEL, - origin_state=workflow_initial_state, - destination_state=workflow_state - ) - - self.assertEquals(WorkflowTransition.objects.count(), 1) + self._create_workflow() + self._create_workflow_states() + self._create_workflow_transition() response = self.post( 'document_states:setup_workflow_transition_delete', - args=(workflow_transition.pk,), follow=True + args=(self.workflow_transition.pk,), follow=True ) self.assertEquals(response.status_code, 200) @@ -149,3 +150,207 @@ class DocumentStateViewTestCase(GenericViewTestCase): self.assertEquals(WorkflowState.objects.count(), 2) self.assertEquals(Workflow.objects.count(), 1) self.assertEquals(WorkflowTransition.objects.count(), 0) + + +class DocumentStateToolViewTestCase(GenericDocumentViewTestCase): + def _create_workflow(self): + self.workflow = Workflow.objects.create(label=TEST_WORKFLOW_LABEL) + self.workflow.document_types.add(self.document_type) + + def _create_workflow_states(self): + self._create_workflow() + self.workflow_state_1 = self.workflow.states.create( + completion=TEST_WORKFLOW_INITIAL_STATE_COMPLETION, + initial=True, label=TEST_WORKFLOW_INITIAL_STATE_LABEL + ) + self.workflow_state_2 = self.workflow.states.create( + completion=TEST_WORKFLOW_STATE_COMPLETION, + label=TEST_WORKFLOW_STATE_LABEL + ) + + def _create_workflow_transition(self): + self._create_workflow_states() + self.workflow_transition = self.workflow.transitions.create( + label=TEST_WORKFLOW_TRANSITION_LABEL, + origin_state=self.workflow_state_1, + destination_state=self.workflow_state_2, + ) + + def test_tool_launch_all_workflows_view_no_permission(self): + self._create_workflow_transition() + + self.login_user() + + self.assertEqual(self.document.workflows.count(), 0) + + response = self.post( + 'document_states:tool_launch_all_workflows', + ) + self.assertEqual(response.status_code, 403) + self.assertEqual(self.document.workflows.count(), 0) + + def test_tool_launch_all_workflows_view_with_permission(self): + self._create_workflow_transition() + + self.login_user() + self.grant(permission_workflow_tools) + + self.assertEqual(self.document.workflows.count(), 0) + + response = self.post( + 'document_states:tool_launch_all_workflows', + ) + self.assertEqual(response.status_code, 302) + + self.assertEqual( + self.document.workflows.first().workflow, self.workflow + ) + + +class DocumentStateTransitionViewTestCase(GenericDocumentViewTestCase): + def _create_workflow(self): + self.workflow = Workflow.objects.create(label=TEST_WORKFLOW_LABEL) + self.workflow.document_types.add(self.document_type) + + def _create_workflow_states(self): + self.workflow_initial_state = WorkflowState.objects.create( + workflow=self.workflow, label=TEST_WORKFLOW_INITIAL_STATE_LABEL, + completion=TEST_WORKFLOW_INITIAL_STATE_COMPLETION, initial=True + ) + self.workflow_state = WorkflowState.objects.create( + workflow=self.workflow, label=TEST_WORKFLOW_STATE_LABEL, + completion=TEST_WORKFLOW_STATE_COMPLETION + ) + + def _create_workflow_transitions(self): + self.workflow_transition = WorkflowTransition.objects.create( + workflow=self.workflow, label=TEST_WORKFLOW_TRANSITION_LABEL, + origin_state=self.workflow_initial_state, + destination_state=self.workflow_state + ) + + self.workflow_transition_2 = WorkflowTransition.objects.create( + workflow=self.workflow, label=TEST_WORKFLOW_TRANSITION_LABEL_2, + origin_state=self.workflow_initial_state, + destination_state=self.workflow_state + ) + + def _create_document(self): + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document_2 = self.document_type.new_document( + file_object=file_object + ) + + def _request_workflow_transition(self, workflow_instance): + return self.post( + 'document_states:workflow_instance_transition', + args=(workflow_instance.pk,), data={ + 'transition': self.workflow_transition.pk, + } + ) + + def test_transition_workflow_no_permission(self): + self.login_user() + self._create_workflow() + self._create_workflow_states() + self._create_workflow_transitions() + self._create_document() + + workflow_instance = self.document_2.workflows.first() + + response = self._request_workflow_transition( + workflow_instance=workflow_instance + ) + + self.assertEqual(response.status_code, 200) + + # Workflow should remain in the same initial state + self.assertEqual( + workflow_instance.get_current_state(), self.workflow_initial_state + ) + + def test_transition_workflow_with_permission(self): + """ + Test transitioning a workflow by granting the transition workflow + permission to the role. + """ + + self.login_user() + self._create_workflow() + self._create_workflow_states() + self._create_workflow_transitions() + self._create_document() + + workflow_instance = self.document_2.workflows.first() + + self.grant(permission_workflow_transition) + response = self._request_workflow_transition( + workflow_instance=workflow_instance + ) + + self.assertEqual(response.status_code, 302) + + # Workflow should remain in the same initial state + self.assertEqual( + workflow_instance.get_current_state(), self.workflow_state + ) + + def test_transition_workflow_with_workflow_acl(self): + """ + Test transitioning a workflow by granting the transition workflow + permission to the workflow itself via ACL. + """ + + self.login_user() + self._create_workflow() + self._create_workflow_states() + self._create_workflow_transitions() + self._create_document() + + workflow_instance = self.document_2.workflows.first() + + acl = AccessControlList.objects.create( + content_object=self.workflow, role=self.role + ) + acl.permissions.add(permission_workflow_transition.stored_permission) + + response = self._request_workflow_transition( + workflow_instance=workflow_instance + ) + + self.assertEqual(response.status_code, 302) + + # Workflow should remain in the same initial state + self.assertEqual( + workflow_instance.get_current_state(), self.workflow_state + ) + + def test_transition_workflow_with_transition_acl(self): + """ + Test transitioning a workflow by granting the transition workflow + permission to the transition via ACL. + """ + + self.login_user() + self._create_workflow() + self._create_workflow_states() + self._create_workflow_transitions() + self._create_document() + + workflow_instance = self.document_2.workflows.first() + + acl = AccessControlList.objects.create( + content_object=self.workflow_transition, role=self.role + ) + acl.permissions.add(permission_workflow_transition.stored_permission) + + response = self._request_workflow_transition( + workflow_instance=workflow_instance + ) + + self.assertEqual(response.status_code, 302) + + # Workflow should remain in the same initial state + self.assertEqual( + workflow_instance.get_current_state(), self.workflow_state + ) diff --git a/mayan/apps/document_states/urls.py b/mayan/apps/document_states/urls.py index a8b30e460e..1492f37156 100644 --- a/mayan/apps/document_states/urls.py +++ b/mayan/apps/document_states/urls.py @@ -2,6 +2,13 @@ from __future__ import unicode_literals from django.conf.urls import url +from .api_views import ( + APIDocumentTypeWorkflowListView, APIWorkflowDocumentTypeList, + APIWorkflowDocumentTypeView, APIWorkflowInstanceListView, + APIWorkflowInstanceView, APIWorkflowInstanceLogEntryListView, + APIWorkflowListView, APIWorkflowStateListView, APIWorkflowStateView, + APIWorkflowTransitionListView, APIWorkflowTransitionView, APIWorkflowView +) from .views import ( DocumentWorkflowInstanceListView, SetupWorkflowCreateView, SetupWorkflowDeleteView, SetupWorkflowDocumentTypesView, @@ -10,8 +17,9 @@ from .views import ( SetupWorkflowStateEditView, SetupWorkflowStateListView, SetupWorkflowTransitionListView, SetupWorkflowTransitionCreateView, SetupWorkflowTransitionDeleteView, SetupWorkflowTransitionEditView, - WorkflowDocumentListView, WorkflowInstanceDetailView, - WorkflowInstanceTransitionView + ToolLaunchAllWorkflows, WorkflowDocumentListView, + WorkflowInstanceDetailView, WorkflowInstanceTransitionView, + WorkflowListView, WorkflowStateDocumentListView, WorkflowStateListView ) urlpatterns = [ @@ -95,4 +103,82 @@ urlpatterns = [ SetupWorkflowTransitionEditView.as_view(), name='setup_workflow_transition_edit' ), + url( + r'^tools/workflow/all/launch/$', + ToolLaunchAllWorkflows.as_view(), + name='tool_launch_all_workflows' + ), + url( + r'all/$', + WorkflowListView.as_view(), + name='workflow_list' + ), + url( + r'^(?P\d+)/documents/$', + WorkflowDocumentListView.as_view(), + name='workflow_document_list' + ), + + url( + r'^(?P\d+)/states/$', + WorkflowStateListView.as_view(), + name='workflow_state_list' + ), + url( + r'^state/(?P\d+)/documents/$', + WorkflowStateDocumentListView.as_view(), + name='workflow_state_document_list' + ), +] + +api_urls = [ + url(r'^workflows/$', APIWorkflowListView.as_view(), name='workflow-list'), + url( + r'^workflows/(?P[0-9]+)/$', APIWorkflowView.as_view(), + name='workflow-detail' + ), + url( + r'^workflows/(?P[0-9]+)/document_types/$', + APIWorkflowDocumentTypeList.as_view(), + name='workflow-document-type-list' + ), + url( + r'^workflows/(?P[0-9]+)/document_types/(?P[0-9]+)/$', + APIWorkflowDocumentTypeView.as_view(), + name='workflow-document-type-detail' + ), + url( + r'^workflows/(?P[0-9]+)/states/$', + APIWorkflowStateListView.as_view(), name='workflowstate-list' + ), + url( + r'^workflows/(?P[0-9]+)/states/(?P[0-9]+)/$', + APIWorkflowStateView.as_view(), name='workflowstate-detail' + ), + url( + r'^workflows/(?P[0-9]+)/transitions/$', + APIWorkflowTransitionListView.as_view(), name='workflowtransition-list' + ), + url( + r'^workflows/(?P[0-9]+)/transitions/(?P[0-9]+)/$', + APIWorkflowTransitionView.as_view(), name='workflowtransition-detail' + ), + url( + r'^documents/(?P[0-9]+)/workflows/$', + APIWorkflowInstanceListView.as_view(), name='workflowinstance-list' + ), + url( + r'^documents/(?P[0-9]+)/workflows/(?P[0-9]+)/$', + APIWorkflowInstanceView.as_view(), name='workflowinstance-detail' + ), + url( + r'^documents/(?P[0-9]+)/workflows/(?P[0-9]+)/log_entries/$', + APIWorkflowInstanceLogEntryListView.as_view(), + name='workflowinstancelogentry-list' + ), + url( + r'^document_types/(?P[0-9]+)/workflows/$', + APIDocumentTypeWorkflowListView.as_view(), + name='documenttype-workflow-list' + ), ] diff --git a/mayan/apps/document_states/views.py b/mayan/apps/document_states/views.py index c63ac0f777..ffc0e4a86d 100644 --- a/mayan/apps/document_states/views.py +++ b/mayan/apps/document_states/views.py @@ -2,16 +2,16 @@ from __future__ import absolute_import, unicode_literals from django.contrib import messages from django.core.urlresolvers import reverse, reverse_lazy +from django.db.models import F, Max from django.db.utils import IntegrityError from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404 from django.utils.translation import ugettext_lazy as _ -from django.views.generic import FormView from acls.models import AccessControlList from common.views import ( - AssignRemoveView, SingleObjectCreateView, SingleObjectDeleteView, - SingleObjectEditView, SingleObjectListView + AssignRemoveView, ConfirmView, FormView, SingleObjectCreateView, + SingleObjectDeleteView, SingleObjectEditView, SingleObjectListView ) from documents.models import Document from documents.views import DocumentListView @@ -20,12 +20,16 @@ from .forms import ( WorkflowForm, WorkflowInstanceTransitionForm, WorkflowStateForm, WorkflowTransitionForm ) -from .models import Workflow, WorkflowInstance, WorkflowState, WorkflowTransition +from .models import ( + Workflow, WorkflowInstance, WorkflowInstanceLogEntry, WorkflowState, + WorkflowTransition, WorkflowRuntimeProxy, WorkflowStateRuntimeProxy +) from .permissions import ( permission_workflow_create, permission_workflow_delete, - permission_workflow_edit, permission_workflow_transition, + permission_workflow_edit, permission_workflow_tools, permission_workflow_view, ) +from .tasks import task_launch_all_workflows class DocumentWorkflowInstanceListView(SingleObjectListView): @@ -55,36 +59,10 @@ class DocumentWorkflowInstanceListView(SingleObjectListView): return self.get_document().workflows.all() -class WorkflowDocumentListView(DocumentListView): - def dispatch(self, request, *args, **kwargs): - self.workflow = get_object_or_404(Workflow, pk=self.kwargs['pk']) - - AccessControlList.objects.check_access( - permissions=permission_workflow_view, user=request.user, - obj=self.workflow - ) - - return super( - WorkflowDocumentListView, self - ).dispatch(request, *args, **kwargs) - - def get_document_queryset(self): - return Document.objects.filter( - document_type__in=self.workflow.document_types.all() - ) - - def get_extra_context(self): - return { - 'hide_links': True, - 'object': self.workflow, - 'title': _('Documents with the workflow: %s') % self.workflow - } - - class WorkflowInstanceDetailView(SingleObjectListView): def dispatch(self, request, *args, **kwargs): AccessControlList.objects.check_access( - permissions=permission_workflow_view, users=request.user, + permissions=permission_workflow_view, user=request.user, obj=self.get_workflow_instance().document ) @@ -114,23 +92,10 @@ class WorkflowInstanceTransitionView(FormView): form_class = WorkflowInstanceTransitionForm template_name = 'appearance/generic_form.html' - def dispatch(self, request, *args, **kwargs): - AccessControlList.objects.check_access( - permissions=permission_workflow_transition, user=request.user, - obj=self.get_workflow_instance().document - ) - - return super( - WorkflowInstanceTransitionView, self - ).dispatch(request, *args, **kwargs) - def form_valid(self, form): - transition = self.get_workflow_instance().workflow.transitions.get( - pk=form.cleaned_data['transition'] - ) self.get_workflow_instance().do_transition( - comment=form.cleaned_data['comment'], transition=transition, - user=self.request.user + comment=form.cleaned_data['comment'], + transition=form.cleaned_data['transition'], user=self.request.user ) return HttpResponseRedirect(self.get_success_url()) @@ -145,10 +110,11 @@ class WorkflowInstanceTransitionView(FormView): 'workflow_instance': self.get_workflow_instance(), } - def get_form_kwargs(self): - kwargs = super(WorkflowInstanceTransitionView, self).get_form_kwargs() - kwargs['workflow'] = self.get_workflow_instance() - return kwargs + def get_form_extra_kwargs(self): + return { + 'user': self.request.user, + 'workflow_instance': self.get_workflow_instance() + } def get_success_url(self): return self.get_workflow_instance().get_absolute_url() @@ -429,3 +395,131 @@ class SetupWorkflowTransitionEditView(SingleObjectEditView): 'document_states:setup_workflow_transitions', args=(self.get_object().workflow.pk,) ) + + +class WorkflowListView(SingleObjectListView): + view_permission = permission_workflow_view + + def get_queryset(self): + return WorkflowRuntimeProxy.objects.all() + + def get_extra_context(self): + return { + 'hide_link': True, + 'title': _('Workflows') + } + + +class WorkflowDocumentListView(DocumentListView): + def dispatch(self, request, *args, **kwargs): + self.workflow = get_object_or_404( + WorkflowRuntimeProxy, pk=self.kwargs['pk'] + ) + + AccessControlList.objects.check_access( + permissions=permission_workflow_view, user=request.user, + obj=self.workflow + ) + + return super( + WorkflowDocumentListView, self + ).dispatch(request, *args, **kwargs) + + def get_document_queryset(self): + return Document.objects.filter(workflows__workflow=self.workflow) + + def get_extra_context(self): + return { + 'hide_links': True, + 'object': self.workflow, + 'title': _('Documents with the workflow: %s') % self.workflow + } + + +class WorkflowStateDocumentListView(DocumentListView): + def dispatch(self, request, *args, **kwargs): + self.workflow_state = get_object_or_404( + WorkflowStateRuntimeProxy, pk=self.kwargs['pk'] + ) + + AccessControlList.objects.check_access( + permissions=permission_workflow_view, user=request.user, + obj=self.workflow_state.workflow + ) + + return super( + WorkflowStateDocumentListView, self + ).dispatch(request, *args, **kwargs) + + def get_document_queryset(self): + latest_entries = WorkflowInstanceLogEntry.objects.annotate( + max_datetime=Max( + 'workflow_instance__log_entries__datetime' + ) + ).filter( + datetime=F('max_datetime') + ) + + state_latest_entries = latest_entries.filter( + transition__destination_state=self.workflow_state + ) + + return Document.objects.filter( + workflows__pk__in=state_latest_entries.values_list( + 'workflow_instance', flat=True + ) + ) + + def get_extra_context(self): + return { + 'hide_links': True, + 'object': self.workflow_state, + 'navigation_object_list': ('object', 'workflow'), + 'workflow': WorkflowRuntimeProxy.objects.get( + pk=self.workflow_state.workflow.pk + ), + 'title': _( + 'Documents in the workflow "%s", state "%s"' + ) % (self.workflow_state.workflow, self.workflow_state) + } + + +class WorkflowStateListView(SingleObjectListView): + def dispatch(self, request, *args, **kwargs): + AccessControlList.objects.check_access( + permissions=permission_workflow_view, user=request.user, + obj=self.get_workflow() + ) + + return super( + WorkflowStateListView, self + ).dispatch(request, *args, **kwargs) + + def get_extra_context(self): + return { + 'hide_columns': True, + 'hide_link': True, + 'object': self.get_workflow(), + 'title': _('States of workflow: %s') % self.get_workflow() + } + + def get_queryset(self): + return WorkflowStateRuntimeProxy.objects.filter( + workflow=self.get_workflow() + ) + + def get_workflow(self): + return get_object_or_404(WorkflowRuntimeProxy, pk=self.kwargs['pk']) + + +class ToolLaunchAllWorkflows(ConfirmView): + extra_context = { + 'title': _('Launch all workflows?') + } + view_permission = permission_workflow_tools + + def view_action(self): + task_launch_all_workflows.apply_async() + messages.success( + self.request, _('Workflow launch queued successfully.') + ) diff --git a/mayan/apps/documents/api_views.py b/mayan/apps/documents/api_views.py index 92d66c6c27..1edd63e5ab 100644 --- a/mayan/apps/documents/api_views.py +++ b/mayan/apps/documents/api_views.py @@ -15,23 +15,24 @@ from rest_api.permissions import MayanPermission from .literals import DOCUMENT_IMAGE_TASK_TIMEOUT from .models import ( - Document, DocumentPage, DocumentType, DocumentVersion, RecentDocument + Document, DocumentType, RecentDocument ) from .permissions import ( permission_document_create, permission_document_delete, permission_document_download, permission_document_edit, permission_document_new_version, permission_document_properties_edit, permission_document_restore, permission_document_trash, - permission_document_version_revert, permission_document_view, - permission_document_type_create, permission_document_type_delete, - permission_document_type_edit, permission_document_type_view + permission_document_view, permission_document_type_create, + permission_document_type_delete, permission_document_type_edit, + permission_document_type_view, permission_document_version_view ) from .runtime import cache_storage_backend from .serializers import ( DeletedDocumentSerializer, DocumentPageSerializer, DocumentSerializer, DocumentTypeSerializer, DocumentVersionSerializer, - DocumentVersionRevertSerializer, NewDocumentSerializer, - NewDocumentVersionSerializer, RecentDocumentSerializer + NewDocumentSerializer, NewDocumentVersionSerializer, + RecentDocumentSerializer, WritableDocumentSerializer, + WritableDocumentTypeSerializer, WritableDocumentVersionSerializer ) from .tasks import task_generate_document_page_image @@ -78,10 +79,11 @@ class APIDeletedDocumentRestoreView(generics.GenericAPIView): mayan_object_permissions = { 'POST': (permission_document_restore,) } - permission_classes = (MayanPermission,) queryset = Document.trash.all() - serializer_class = DeletedDocumentSerializer + + def get_serializer_class(self): + return None def post(self, *args, **kwargs): self.get_object().restore() @@ -156,12 +158,15 @@ class APIDocumentVersionDownloadView(DownloadMixin, generics.RetrieveAPIView): paramType: path type: number """ + lookup_url_kwarg = 'version_pk' - mayan_object_permissions = { - 'GET': (permission_document_download,) - } - permission_classes = (MayanPermission,) - queryset = DocumentVersion.objects.all() + def get_document(self): + document = get_object_or_404(Document, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permission_document_view, self.request.user, document + ) + return document def get_file(self): instance = self.get_object() @@ -170,6 +175,9 @@ class APIDocumentVersionDownloadView(DownloadMixin, generics.RetrieveAPIView): def get_serializer_class(self): return None + def get_queryset(self): + return self.get_document().versions.all() + def retrieve(self, request, *args, **kwargs): return self.render_to_response() @@ -187,7 +195,6 @@ class APIDocumentView(generics.RetrieveUpdateDestroyAPIView): } permission_classes = (MayanPermission,) queryset = Document.objects.all() - serializer_class = DocumentSerializer def delete(self, *args, **kwargs): """ @@ -203,6 +210,19 @@ class APIDocumentView(generics.RetrieveUpdateDestroyAPIView): return super(APIDocumentView, self).get(*args, **kwargs) + def get_serializer_context(self): + return { + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } + + def get_serializer_class(self): + if self.request.method == 'GET': + return DocumentSerializer + else: + return WritableDocumentSerializer + def patch(self, *args, **kwargs): """ Edit the properties of the selected document. @@ -235,12 +255,28 @@ class APIDocumentPageImageView(generics.RetrieveAPIView): type: number """ - mayan_object_permissions = { - 'GET': (permission_document_view,), - } - mayan_permission_attribute_check = 'document' - permission_classes = (MayanPermission,) - queryset = DocumentPage.objects.all() + lookup_url_kwarg = 'page_pk' + + def get_document(self): + if self.request.method == 'GET': + permission_required = permission_document_view + else: + permission_required = permission_document_edit + + document = get_object_or_404(Document, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permission_required, self.request.user, document + ) + return document + + def get_document_version(self): + return get_object_or_404( + self.get_document().versions.all(), pk=self.kwargs['version_pk'] + ) + + def get_queryset(self): + return self.get_document_version().pages.all() def get_serializer_class(self): return None @@ -259,7 +295,7 @@ class APIDocumentPageImageView(generics.RetrieveAPIView): task = task_generate_document_page_image.apply_async( kwargs=dict( - document_page_id=self.kwargs['pk'], size=size, zoom=zoom, + document_page_id=self.kwargs['page_pk'], size=size, zoom=zoom, rotation=rotation ) ) @@ -274,14 +310,7 @@ class APIDocumentPageView(generics.RetrieveUpdateAPIView): Returns the selected document page details. """ - mayan_object_permissions = { - 'GET': (permission_document_view,), - 'PUT': (permission_document_edit,), - 'PATCH': (permission_document_edit,) - } - mayan_permission_attribute_check = 'document' - permission_classes = (MayanPermission,) - queryset = DocumentPage.objects.all() + lookup_url_kwarg = 'page_pk' serializer_class = DocumentPageSerializer def get(self, *args, **kwargs): @@ -291,6 +320,27 @@ class APIDocumentPageView(generics.RetrieveUpdateAPIView): return super(APIDocumentPageView, self).get(*args, **kwargs) + def get_document(self): + if self.request.method == 'GET': + permission_required = permission_document_view + else: + permission_required = permission_document_edit + + document = get_object_or_404(Document, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permission_required, self.request.user, document + ) + return document + + def get_document_version(self): + return get_object_or_404( + self.get_document().versions.all(), pk=self.kwargs['version_pk'] + ) + + def get_queryset(self): + return self.get_document_version().pages.all() + def patch(self, *args, **kwargs): """ Edit the selected document page. @@ -321,6 +371,12 @@ class APIDocumentTypeListView(generics.ListCreateAPIView): return super(APIDocumentTypeListView, self).get(*args, **kwargs) + def get_serializer_class(self): + if self.request.method == 'GET': + return DocumentTypeSerializer + else: + return WritableDocumentTypeSerializer + def post(self, *args, **kwargs): """ Create a new document type. @@ -342,7 +398,6 @@ class APIDocumentTypeView(generics.RetrieveUpdateDestroyAPIView): } permission_classes = (MayanPermission,) queryset = DocumentType.objects.all() - serializer_class = DocumentTypeSerializer def delete(self, *args, **kwargs): """ @@ -358,6 +413,12 @@ class APIDocumentTypeView(generics.RetrieveUpdateDestroyAPIView): return super(APIDocumentTypeView, self).get(*args, **kwargs) + def get_serializer_class(self): + if self.request.method == 'GET': + return DocumentTypeSerializer + else: + return WritableDocumentTypeSerializer + def patch(self, *args, **kwargs): """ Edit the properties of the selected document type. @@ -406,13 +467,40 @@ class APIRecentDocumentListView(generics.ListAPIView): return super(APIRecentDocumentListView, self).get(*args, **kwargs) +class APIDocumentVersionPageListView(generics.ListAPIView): + serializer_class = DocumentPageSerializer + + def get_document(self): + document = get_object_or_404(Document, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permission_document_view, self.request.user, document + ) + return document + + def get_document_version(self): + return get_object_or_404( + self.get_document().versions.all(), pk=self.kwargs['version_pk'] + ) + + def get_queryset(self): + return self.get_document_version().pages.all() + + def get_serializer_context(self): + return { + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } + + class APIDocumentVersionsListView(generics.ListCreateAPIView): """ Return a list of the selected document's versions. """ mayan_object_permissions = { - 'GET': (permission_document_view,), + 'GET': (permission_document_version_view,), } mayan_permission_attribute_check = 'document' mayan_view_permissions = {'POST': (permission_document_new_version,)} @@ -450,20 +538,48 @@ class APIDocumentVersionsListView(generics.ListCreateAPIView): return Response(status=status.HTTP_202_ACCEPTED, headers=headers) -class APIDocumentVersionView(generics.RetrieveUpdateAPIView): +class APIDocumentVersionView(generics.RetrieveUpdateDestroyAPIView): """ Returns the selected document version details. """ - mayan_object_permissions = { - 'GET': (permission_document_view,), - 'PATCH': (permission_document_edit,), - 'PUT': (permission_document_edit,), - } - mayan_permission_attribute_check = 'document' - permission_classes = (MayanPermission,) - queryset = DocumentVersion.objects.all() - serializer_class = DocumentVersionSerializer + lookup_url_kwarg = 'version_pk' + + def delete(self, *args, **kwargs): + """ + Delete the selected document version. + """ + + return super(APIDocumentVersionView, self).delete(*args, **kwargs) + + def get_document(self): + if self.request.method == 'GET': + permission_required = permission_document_view + else: + permission_required = permission_document_edit + + document = get_object_or_404(Document, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permission_required, self.request.user, document + ) + return document + + def get_queryset(self): + return self.get_document().versions.all() + + def get_serializer_class(self): + if self.request.method == 'GET': + return DocumentVersionSerializer + else: + return WritableDocumentVersionSerializer + + def get_serializer_context(self): + return { + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } def patch(self, *args, **kwargs): """ @@ -478,21 +594,3 @@ class APIDocumentVersionView(generics.RetrieveUpdateAPIView): """ return super(APIDocumentVersionView, self).put(*args, **kwargs) - - -class APIDocumentVersionRevertView(generics.GenericAPIView): - """ - Revert to an earlier document version. - """ - - mayan_object_permissions = { - 'POST': (permission_document_version_revert,) - } - mayan_permission_attribute_check = 'document' - permission_classes = (MayanPermission,) - queryset = DocumentVersion.objects.all() - serializer_class = DocumentVersionRevertSerializer - - def post(self, *args, **kwargs): - self.get_object().revert(_user=self.request.user) - return Response(status=status.HTTP_200_OK) diff --git a/mayan/apps/documents/apps.py b/mayan/apps/documents/apps.py index 25e6e96884..65d9200e5c 100644 --- a/mayan/apps/documents/apps.py +++ b/mayan/apps/documents/apps.py @@ -27,7 +27,7 @@ from events.links import link_events_for_object from events.permissions import permission_events_view from mayan.celery import app from navigation import SourceColumn -from rest_api.classes import APIEndPoint +from rest_api.classes import APIEndPoint, APIResource from rest_api.fields import DynamicSerializerField from statistics.classes import StatisticNamespace, CharJSLine @@ -82,8 +82,8 @@ from .widgets import DocumentThumbnailWidget, DocumentPageThumbnailWidget class DocumentsApp(MayanAppConfig): + has_tests = True name = 'documents' - test = True verbose_name = _('Documents') def ready(self): @@ -91,6 +91,9 @@ class DocumentsApp(MayanAppConfig): from actstream import registry APIEndPoint(app=self, version_string='1') + APIResource(label=_('Document types'), name='document_types') + APIResource(label=_('Documents'), name='documents') + APIResource(label=_('Trashed documents'), name='trashed_documents') DeletedDocument = self.get_model('DeletedDocument') Document = self.get_model('Document') @@ -105,6 +108,42 @@ class DocumentsApp(MayanAppConfig): serializer_class='documents.serializers.DocumentSerializer' ) + DashboardWidget( + func=new_document_pages_this_month, icon='fa fa-calendar', + label=_('New pages this month'), + link=reverse_lazy( + 'statistics:statistic_detail', + args=('new-document-pages-per-month',) + ) + ) + + DashboardWidget( + func=new_documents_this_month, icon='fa fa-calendar', + label=_('New documents this month'), + link=reverse_lazy( + 'statistics:statistic_detail', + args=('new-documents-per-month',) + ) + ) + + DashboardWidget( + icon='fa fa-file', queryset=Document.objects.all(), + label=_('Total documents'), + link=reverse_lazy('documents:document_list') + ) + + DashboardWidget( + icon='fa fa-book', queryset=DocumentType.objects.all(), + label=_('Document types'), + link=reverse_lazy('documents:document_type_list') + ) + + DashboardWidget( + icon='fa fa-trash', queryset=DeletedDocument.objects.all(), + label=_('Documents in trash'), + link=reverse_lazy('documents:document_list_deleted') + ) + MissingItem( label=_('Create a document type'), description=_( diff --git a/mayan/apps/documents/links.py b/mayan/apps/documents/links.py index 436273eab8..9764013a3b 100644 --- a/mayan/apps/documents/links.py +++ b/mayan/apps/documents/links.py @@ -14,13 +14,21 @@ from .permissions import ( permission_document_version_revert, permission_document_view, permission_document_trash, permission_document_type_create, permission_document_type_delete, permission_document_type_edit, - permission_document_type_view, permission_empty_trash + permission_document_type_view, permission_empty_trash, + permission_document_version_view ) from .settings import setting_zoom_max_level, setting_zoom_min_level def is_not_current_version(context): - return context['resolved_object'].document.latest_version.timestamp != context['resolved_object'].timestamp + # Use the 'object' key when the document version is an object in a list, + # such as when showing the version list view and use the 'resolved_object' + # when the document version is the context object, such as when showing the + # signatures list of a documern version. This can be fixed by updating + # the navigations app object resolution logic to use 'resolved_object' even + # for objects in a list. + document_version = context.get('object', context['resolved_object']) + return document_version.document.latest_version.timestamp != document_version.timestamp def is_first_page(context): @@ -51,7 +59,7 @@ link_document_properties = Link( args='resolved_object.id' ) link_document_version_list = Link( - icon='fa fa-code-fork', permissions=(permission_document_view,), + icon='fa fa-code-fork', permissions=(permission_document_version_view,), text=_('Versions'), view='documents:document_version_list', args='resolved_object.pk' ) diff --git a/mayan/apps/documents/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/ar/LC_MESSAGES/django.mo index 3de7470a47..30f58787c2 100644 Binary files a/mayan/apps/documents/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/ar/LC_MESSAGES/django.po b/mayan/apps/documents/locale/ar/LC_MESSAGES/django.po index 8bb4bc416e..96d4d43095 100644 --- a/mayan/apps/documents/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/ar/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -18,85 +18,110 @@ msgstr "" "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" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "الوثائق" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "نوع الملف" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "تعليق" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -130,68 +155,77 @@ msgstr "" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "صورة الصفحة" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "إعادة تسمية الوثيقة بسرعة" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "تاريخ الاضافة" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "" + #: forms.py:122 +msgid "Unknown" +msgstr "Unknown" + +#: forms.py:130 msgid "File mimetype" msgstr "نوع الملف" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "لا شيء" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "حجم الملف" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "موجود في التخزين" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "مسار الملف في التخزين" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Checksum" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "صفحات" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "نوع الوثيقة" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "ضغط" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -202,169 +236,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "اسم الملف المضغوط" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "اسم الملف المضغوط سيحتوي الوثائق التي سيتم تحويلها، اذا تم اختيار الخيار السابق" -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "نطاق الصفحات" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "تحميل" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "مسح بيانات الرسومات المستخدمة لتسريع عرض الوثائق و نتائج التحويلات." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "تحرير" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "" - #: literals.py:14 msgid "Default" msgstr "Default" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -402,99 +442,97 @@ msgstr "" msgid "Documents types" msgstr "" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Description" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "" -#: models.py:169 -msgid "Language" -msgstr "" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "ملف" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "صفحة %(page_num)d من أصل %(total_pages)d للوثيقة %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "اسم الملف" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "مستخدم" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "" @@ -511,7 +549,7 @@ msgstr "حذف الوثائق" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "تحميل الوثائق" @@ -569,212 +607,158 @@ msgstr "تحرير أنواع الوثائق" msgid "View document types" msgstr "عرض أنواع الوثائق" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "أكبر عدد من الوثائق الحديثة للتذكر لكل مستخدم." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "النسبة المئوية لتكبير أو تصغير في صفحة الوثيقة لكل مستخدم." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "أكبر نسبة مئوية (%) للسماح بالتكبير داخل الوثيقة لكل مستخدم." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "أقل نسبة مئوية (%) للسماح بالتكبير داخل الوثيقة لكل مستخدم." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "الدرجة المسموح بها لتدوير الوثيقة لكل مستخدم." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "لا توجد صفحات أخرى بهذه الوثيقة" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "أنت بالفعل في الصفحة الأولى من هذه الوثيقة" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "سيتم حذف جميع الإصدارات اللاحقة بعد هذا الإصدار أيضا." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "تم ارجاع اصدار الوثيقة بنجاح" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "خطأ بارجاع اصدار الوثيقة %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:639 -msgid "Empty trash?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" -msgstr "" - -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "يجب أن توفر ما لا يقل عن وثيقة واحدة." - -#: views.py:704 +#: views/document_views.py:120 #, python-format -msgid "Document type for \"%s\" changed successfully." +msgid "Document type change request performed on %(count)d document" msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "ارسال" +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" @@ -782,32 +766,80 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" +#: views/document_views.py:164 +#, python-format +msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:828 -msgid "Date and time" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" msgstr "" -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:964 +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" +msgstr "" + +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" +msgstr "" + +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "" + +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" @@ -817,23 +849,24 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: views.py:1023 +#: views/document_views.py:541 #, python-format -msgid "" -"Error deleting the page transformations for document: %(document)s; " -"%(error)s." -msgstr "خطأ بمسح التحويلات الخاصة بالوثيقة: %(document)s; %(error)s." +msgid "Recalculate the page count of the document: %s?" +msgstr "" -#: views.py:1032 +#: views/document_views.py:558 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "كل التحويلات الخاصة بالوثيقة: %s, تم مسحها بنجاح." +msgid "Transformation clear request processed for %(count)d document" +msgstr "" -#: views.py:1044 +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" +msgid_plural "Clear all the page transformations for the selected document?" msgstr[0] "" msgstr[1] "" msgstr[2] "" @@ -841,28 +874,85 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "لا توجد صفحات أخرى بهذه الوثيقة" +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "أنت بالفعل في الصفحة الأولى من هذه الوثيقة" +#: views/document_views.py:595 views/document_views.py:623 +#, python-format +msgid "" +"Error deleting the page transformations for document: %(document)s; " +"%(error)s." +msgstr "خطأ بمسح التحويلات الخاصة بالوثيقة: %(document)s; %(error)s." -#: views.py:1225 views.py:1234 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "ارسال" + +#: views/document_views.py:648 +#, python-format +msgid "Clone page transformations for document: %s" +msgstr "" + +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -926,9 +1016,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1076,9 +1163,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/bg/LC_MESSAGES/django.mo index e1c7a6fc8d..872a29e444 100644 Binary files a/mayan/apps/documents/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/bg/LC_MESSAGES/django.po b/mayan/apps/documents/locale/bg/LC_MESSAGES/django.po index f1fcd219b3..4cfa7e2620 100644 --- a/mayan/apps/documents/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/bg/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -18,85 +18,110 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Документи" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Коментар" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -130,68 +155,77 @@ msgstr "" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Изображение на страница" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Бързо преименуване на документ" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Дата на добавяне" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "" + #: forms.py:122 +msgid "Unknown" +msgstr "Неизвестен" + +#: forms.py:130 msgid "File mimetype" msgstr "mimetype на файла" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Няма" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Размер на файла" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Съществува в склада" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Файлов път до склада" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Контролна сума" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Страници" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Вид на документа" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Компресиране" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -202,169 +236,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Име на компресирания архив" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "Името на компресирания архив, съдържащ документите за сваляне, ако предишната опция е избрана." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Поредица от страници" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Сваляне" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Изчистване на графичното представяне, използвано да ускори изобразяването на документите и интерактивните промени." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "Редактиране" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "" - #: literals.py:14 msgid "Default" msgstr "По подразбиране" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -402,99 +442,97 @@ msgstr "" msgid "Documents types" msgstr "" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Описание" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "" -#: models.py:169 -msgid "Language" -msgstr "" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "Файл" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Страница %(page_num)d от общо %(total_pages)d страници от %(document)s документи." -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "Име на файл" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "Потребител" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "" @@ -511,7 +549,7 @@ msgstr "Изтриване на документи" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Изтегляне на документи" @@ -569,288 +607,340 @@ msgstr "Редактиране на вида документи" msgid "View document types" msgstr "Преглед на типовете документи" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Максимален брой от скорошни (създадени, редактирани, прегледани) документи, които да се показват на потребителя" -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Процент приближавани или отдалечаване на страницата на документа, приложен за потребителя" -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Максимален процент (%) допустим за интерактивно увеличаване страницата от потребителя" -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Минимален процент (%) допустим за интерактивно смаляване страницата от потребителя" -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Градуси на завъртане на страница от документ, при потребителско действие" -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "Няма повече страници в този документ" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Вече сте на първа страница на този документ" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Всички версии, следващи тази, ще бъдат изтрити." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Документа е върнат успешно към предна версия" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Грешка при връщане на версията на документа; %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:639 -msgid "Empty trash?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Трябва да посочите поне един документ." +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "Подаване" - -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "" -msgstr[1] "" - -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:828 -msgid "Date and time" +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" msgstr "" -#: views.py:964 +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "" + +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" msgstr[1] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Грешка при изтриването на преобразования на страница на документ %(document)s, %(error)s." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "Подаване" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Всички преобразования на страницата на документ %s бяха изтрити успешно." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" -msgstr[1] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "Няма повече страници в този документ" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Вече сте на първа страница на този документ" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -914,9 +1004,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1060,9 +1147,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/bs_BA/LC_MESSAGES/django.mo index 5e1d760b00..78ae4f0ce2 100644 Binary files a/mayan/apps/documents/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/documents/locale/bs_BA/LC_MESSAGES/django.po index 6d13f3082b..fc2edbcd61 100644 --- a/mayan/apps/documents/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/bs_BA/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -18,85 +18,110 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Dokumenti" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "MIME tip" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Komentar" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -130,68 +155,77 @@ msgstr "" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Slika za stranicu" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Brzo preimenuj dokument" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Datum dodavanja" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "" + #: forms.py:122 +msgid "Unknown" +msgstr "Nepoznat" + +#: forms.py:130 msgid "File mimetype" msgstr "Mimetype datoteke" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Nijedno" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Veličina datoteke" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Postoji u pohrani" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Putanja dokumenta u pohrani" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Checksum" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Stranice" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Tip dokumenta" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Kompresuj" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -202,169 +236,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Naziv kompresovane datoteke" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "Naziv kompresovane datoteke koji sadrži dokumente koji su za download, ako je ova opcija odabrana." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Opseg stranice" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Download" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Obriši grafičku prezentaciju korištenu za ubrzanje prikaza dokumenata i interaktivnu transformaciju rezultata." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "Urediti" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "" - #: literals.py:14 msgid "Default" msgstr "default" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -402,99 +442,97 @@ msgstr "" msgid "Documents types" msgstr "" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Opis" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "" -#: models.py:169 -msgid "Language" -msgstr "" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "Datoteka" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Stranica %(page_num)d od ukupno %(total_pages)d u %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "Naziv datoteke" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "Korisnik" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "" @@ -511,7 +549,7 @@ msgstr "Obriši dokumente" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Download dokumenata" @@ -569,291 +607,343 @@ msgstr "Izmijeni tipove dokumenata" msgid "View document types" msgstr "Pregledaj tipove dokumenata" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Maksimalni broj nedavnih (kreiran, izmijenjen, pregledan) dokumenata za pamćenje po korisniku." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Iznos u procentima zumiranja stranice dokumenta po korisničkoj sesiji." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Maksimalni dozvoljeni iznos u procentima (%) korisniku da zumira stranicu dokumenta." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Minimalni dozvoljeni iznos u procentima (%) po korisniku da zumira stranicu dokumenta." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Iznos u stepenima za rotaciju stranice dokumenta po korisniku." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "Ovaj dokument nema više stranica." + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Već ste na prvoj stranici ovog dokumenta" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Sve naknadne verzije nakon ove će također biti obrisane." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Verzija dokumenta uspješno vraćena" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Greška pri vraćanju verzije dokumenta; %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:639 -msgid "Empty trash?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" -msgstr "" - -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Mora biti barem jedan dokument." - -#: views.py:704 +#: views/document_views.py:120 #, python-format -msgid "Document type for \"%s\" changed successfully." +msgid "Document type change request performed on %(count)d document" msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "Podnijeti" +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" +#: views/document_views.py:164 +#, python-format +msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:828 -msgid "Date and time" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" msgstr "" -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:964 +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" +msgstr "" + +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" +msgstr "" + +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "" + +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Greška brisanja transformacija za dokument: %(document)s; %(error)s." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "Podnijeti" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Sve transformacije stranica za dokument: %s, su uspješno obrisane." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "Ovaj dokument nema više stranica." - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Već ste na prvoj stranici ovog dokumenta" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -917,9 +1007,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1064,9 +1151,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/da/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/da/LC_MESSAGES/django.mo index 4e86032127..b71296b3a0 100644 Binary files a/mayan/apps/documents/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/da/LC_MESSAGES/django.po b/mayan/apps/documents/locale/da/LC_MESSAGES/django.po index cb82180756..ced77ea0cd 100644 --- a/mayan/apps/documents/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/da/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -18,85 +18,110 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Dokumenter" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "MIME type" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Kommentar" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -130,68 +155,77 @@ msgstr "" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Side billede" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Hurtig dokument omdøbning" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Dato tilføjet" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "" + #: forms.py:122 +msgid "Unknown" +msgstr "" + +#: forms.py:130 msgid "File mimetype" msgstr "File MIME-type" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Ingen" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Fil størrelse" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Eksisterer i opbevaring" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Filsti i opbevaring" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Checksum" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Sider" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Dokumenttype" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Komprimér" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -202,169 +236,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Pakket filnavn" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "Filnavnet for den pakkede fil, der vil indeholde dokumenterne til download. Dette hvis den tidligere mulighed er valg." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Sideinterval" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Hent" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Fjern grafiske repræsentationer brugt til at fremskynde visning af de dokumenter og interaktivt transformerede resultater." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "" - #: literals.py:14 msgid "Default" msgstr "Standard" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -402,99 +442,97 @@ msgstr "" msgid "Documents types" msgstr "" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Beskrivelse" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "" -#: models.py:169 -msgid "Language" -msgstr "" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "Fil" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Side %(page_num)d ud af %(total_pages)d i %(document)s " -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "Filnavn" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "Bruger" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "" @@ -511,7 +549,7 @@ msgstr "Slet dokumenter" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Hent dokumenter" @@ -569,288 +607,340 @@ msgstr "Redigér dokumenttyper" msgid "View document types" msgstr "Vis dokumenttyper" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Maksimalt antal seneste (oprettet, redigeret, set) dokumenter der huskes per bruger." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Procent zoom ind eller ud af en dokument side pr brugerinteraktion." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Maksimal mængde i procent (%) en bruger kan zoome i et dokuments side interaktivt." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Minimum procent (%) en brugeren er tilladt at zoome ud af en dokumentside interaktivt." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Antal grader en dokumentside roterer pr brugerinteraktion." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "Der er ikke flere sider i dette dokument" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Du er allerede på den første side af dette dokument" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Alle senere versioner af denne vil også blive slettet." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Tidligere dokumentversion genskabt" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Fejl ved genskabelse af dokumentversion; %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:639 -msgid "Empty trash?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Angiv mindst ét ​​dokument." +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" msgstr "" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "" -msgstr[1] "" - -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:828 -msgid "Date and time" +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." msgstr "" -#: views.py:964 +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" msgstr[1] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Fejl ved sletning af sidens transformationer for dokument: %(document)s ; %(error)s ." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Alle side transformationer for dokument: %s, er blevet slettet." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" -msgstr[1] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "Der er ikke flere sider i dette dokument" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Du er allerede på den første side af dette dokument" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -914,9 +1004,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1060,9 +1147,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/de_DE/LC_MESSAGES/django.mo index 7e472a896e..32df311e8c 100644 Binary files a/mayan/apps/documents/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/documents/locale/de_DE/LC_MESSAGES/django.po index 1bd46e69a1..369b44ade9 100644 --- a/mayan/apps/documents/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/de_DE/LC_MESSAGES/django.po @@ -5,15 +5,16 @@ # Translators: # Translators: # Berny , 2015-2016 +# Jesaja Everling , 2017 # Mathias Behrle , 2015 # Tobias Paepke , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-31 19:06+0000\n" -"Last-Translator: Tobias Paepke \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-24 22:24+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,85 +22,110 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Dokumente" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "Neue Seiten in diesem Monat" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "Neue Dokumente in diesem Monat" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "Alle Dokumente" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "Dokumententypen" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "Dokumente im Papierkorb" + +#: apps.py:145 msgid "Create a document type" msgstr "Dokumententyp erstellen" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "Jedes hochgeladene Dokument muss einen Dokumententyp zugewiesen bekommen, da Mayan EDMS Dokumente auf der Grundlage von Dokumententypen kategorisiert. " -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "Bezeichner" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "Der MIME-Typ der jeweiligen Dokumentenversion" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "MIME Typ" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "Miniaturbild" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "Typ" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "Aktiviert" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "Zeitpunkt der Löschung" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "Zeit und Datum" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "Kodierung" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Kommentar" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "Neue Dokumente pro Monat" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "Neue Dokumentenversionen pro Monat" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "Neue Dokumentenseiten pro Monat" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "Summe der Dokumente im Monat" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "Summe der Dokumentenversionen im Monat" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "Summe der Dokumentenseiten im Monat" @@ -133,68 +159,77 @@ msgstr "Dokumentenversion wurde erfolgreich wiederhergestellt" msgid "Document viewed" msgstr "Dokument angezeigt" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Seitenbild" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "Dokumentseiten (%d)" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Dokument schnell umbenennen" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Hinzugefügt am" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "Sprache" + #: forms.py:122 +msgid "Unknown" +msgstr "Unbekannt" + +#: forms.py:130 msgid "File mimetype" msgstr "Datei MIME Type" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Keine" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "Dateikodierung" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Dateigröße" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Im Dateispeicher" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Pfad im Dateispeicher" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Prüfsumme" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Seiten" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Dokumententyp" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Komprimieren" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -205,169 +240,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "Datei im Originalformat oder als komprimiertes Archiv herunterladen. Diese Option ist nur wählbar, wenn ein einzelnes Dokument heruntergeladen wird. Mehrere Dateien werden immer als komprimiertes Archiv heruntergeladen." -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Name der komprimierten Datei" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "Name der komprimierten Datei, die die Dokumente zum Download beeinhaltet, wenn die vorherige Option gewählt wurde." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Seitenbereich" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "Vorschau" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "Eigenschaften" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "Versionen" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "Transformationen löschen" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "Löschen" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "In den Papierkorb verschieben" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "Eigenschaften bearbeiten" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "Typ ändern" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Herunterladen" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "Drucken" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "Seitenzählung korrigieren" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "Wiederherstellen" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "Version herunterladen" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "Alle Dokumente" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "Letzte Dokumente" -#: links.py:144 -msgid "Trash" -msgstr "Papierkorb" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" +msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Grafiken löschen, die benutzt werden um die Dokumentendarstellung und interaktive Transformationsausgabe zu beschleunigen." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "Dokumentenbildercache löschen" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "Papierkorb leeren" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "Erste Seite" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "Letzte Seite" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "Vorherige Seite" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "Nächste Seite" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "Dokument" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "Nach links drehen" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "Nach rechts drehen" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "Ansicht zurücksetzen" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "Ansicht vergößern" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "Ansicht verkleinern" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "Wiederherstellen" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "Dokumententypen erstellen" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "Bearbeiten" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "Schnellbezeichner zu Dokumententyp hinzufügen" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "Schnellbezeichner" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "Dokumententypen" - #: literals.py:14 msgid "Default" msgstr "Standard" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "Alle Seiten" @@ -405,99 +446,97 @@ msgstr "Einheit (Löschen)" msgid "Documents types" msgstr "Dokumententypen" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "Name des Dokuments" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Beschreibung" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "Hinzugefügt" -#: models.py:169 -msgid "Language" -msgstr "Sprache" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "Im Papierkorb?" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "Zeitpunkt der Löschung" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "Ein Fragment ist ein Dokument mit einem Eintrag in der Datenbank, für das keine Datei hochgeladen wurde. Die Ursache könnte ein fehlgeschlagener Uploadvorgang sein oder ein verzögerter Upload über die API-Schnittstelle." -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "Inkomplett" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "Fragment, ID: %d" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "Zeitstempel" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "Datei" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "Dokumentenversion" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "Schnellbezeichner" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "Seitennummer" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Seite %(page_num)d von %(total_pages)d des Dokuments %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "Dokumentenseite" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "Dokumentenseiten" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" -msgstr "Akutialisierungsschutz" +#: models.py:801 +msgid "Filename" +msgstr "Dateiname" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" -msgstr "Aktualisierungsschutz" +#: models.py:804 +msgid "Document page cached image" +msgstr "" -#: models.py:794 +#: models.py:805 +msgid "Document page cached images" +msgstr "" + +#: models.py:827 msgid "User" msgstr "Benutzer" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "Letzter Zugriff" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "Letztes Dokument" @@ -514,7 +553,7 @@ msgstr "Dokumente löschen" msgid "Trash documents" msgstr "Dokumente in den Papierkorb verschieben" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Dokumente herunterladen" @@ -572,288 +611,340 @@ msgstr "Dokumententypen bearbeiten" msgid "View document types" msgstr "Dokumententypen anzeigen" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Maximale Anzahl der letzten Dokumente (erstellt, bearbeitet, angezeigt) pro Benutzer." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Betrag in Prozent für Ansicht vergrößern/verkleinern pro Benutzer Aktion." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Maximaler erlaubter Zoom in %, den Benutzer interaktiv wählen können." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Minimaler erlaubter Zoom in %, den Benutzer interaktiv wählen können." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Gradzahl, die ein Dokument pro Benutzer Aktion gedreht wird." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "Standarddokumentensprache (im ISO639-2 Format)" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "Liste der unterstützen Dokumentensprachen" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "Dokumentenbildercache löschen?" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "Löschung des Dokumentenbildcaches erfolgreich eingereiht." - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "Dokumente im Papierkorb" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "Das ausgwählte Dokument löschen?" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "Dokument %(document)s gelöscht." - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "Die ausgwählten Dokumente löschen?" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "Eigenschaften von Dokument \"%s\" bearbeiten" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "Das ausgwählte Dokument wiederherstellen?" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "Dokument %(document)s wiederhergestellt" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "Die ausgwählten Dokumente wiederherstellen?" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "Seiten des Dokuments: %s" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "Keine weiteren Seiten in diesem Dokument" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Sie sind bereits auf der ersten Seite dieses Dokuments" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "Seitenbild für %s" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "Vorschau von Dokument %s" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "\"%s\" in den Papierkorb verschieben?" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "Dokument \"%(document)s\" erfolgreich in den Papierkorb verschoben." - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "Die ausgewählten Dokumente in den Papierkorb verschieben?" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "Dokumente des Typs: %s" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "Alle Dokumente dieses Typs werden auch gelöscht." -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "Dokumententyp %s löschen?" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "Dokumententyp %s bearbeiten" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "Schnellbezeichner erstellen für Dokumentenyp %s" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "Schnellbezeichner \"%(filename)s\" von Dokumententyp \"%(document_type)s\" bearbeiten" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "Schnellbezeichner %(label)s von Dokumententyp \"%(document_type)s\" löschen?" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "Schnellbezeichner für Dokumententyp %s" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "Versionen von Dokument %s" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Alle späteren Versionen dieses Dokuments werden ebenfalls gelöscht." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "Diese Dokumentenversion wiederherstellen?" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Dokument wurde erfolgreich wiederhergestellt" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Fehler beim Wiederherstellen der Dokumentenversion %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "Das ausgwählte Dokument löschen?" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" -msgstr "Eigenschaften von Dokument %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." +msgstr "Dokument %(document)s gelöscht." -#: views.py:639 -msgid "Empty trash?" -msgstr "Papierkorb leeren" +#: views/document_views.py:108 +msgid "Delete the selected documents?" +msgstr "Die ausgwählten Dokumente löschen?" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" -msgstr "Papierkorb erfolgreich gelöscht." +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" +msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Es muss mindestens ein Dokument angegeben werden." +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "Dokumententyp für \"%s\" erfolgreich geändert" -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "Ändern" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" +msgstr "Eigenschaften von Dokument \"%s\" bearbeiten" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "Den Typ des ausgewählten Dokuments ändern." -msgstr[1] "Den Typ der ausgewählten Dokumente ändern." +#: views/document_views.py:200 +msgid "Restore the selected document?" +msgstr "Das ausgwählte Dokument wiederherstellen?" -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." -msgstr "Es muss mindestens eine Dokumentenversion angegeben werden." +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." +msgstr "Dokument %(document)s wiederhergestellt" -#: views.py:819 -msgid "Documents to be downloaded" -msgstr "Herunterzuladende Dokumente" +#: views/document_views.py:229 +msgid "Restore the selected documents?" +msgstr "Die ausgwählten Dokumente wiederherstellen?" -#: views.py:828 -msgid "Date and time" -msgstr "Datum und Zeit" +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" +msgstr "Vorschau von Dokument %s" -#: views.py:931 -msgid "At least one document must be selected." -msgstr "Es muss mindestens ein Dokument ausgewählt werden." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" +msgstr "\"%s\" in den Papierkorb verschieben?" -#: views.py:954 -msgid "Document queued for page count recalculation." -msgstr "Dokument eingereiht für Neuberechnung der Seitenzahl" +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "Dokument \"%(document)s\" erfolgreich in den Papierkorb verschoben." -#: views.py:955 -msgid "Documents queued for page count recalculation." -msgstr "Dokumente eingereiht für Neuberechnung der Seitenzahlen." +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "Die ausgewählten Dokumente in den Papierkorb verschieben?" -#: views.py:964 +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "Eigenschaften von Dokument %s" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "Papierkorb leeren" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "Papierkorb erfolgreich gelöscht." + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "Seitenzahl des ausgewählten Dokuments neu berechnen?" msgstr[1] "Seitenzahl der ausgewählten Dokumente neu berechnen?" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Fehler beim Löschen der Seitentransformation von %(document)s; %(error)s" -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "Ändern" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Alle Seitentransformationen für Dokument %s wurden erfolgreich gelöscht." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "Sind Sie sicher, dass Sie die Transformationen des ausgewählten Dokuments zurücksetzen wollen?" -msgstr[1] "Sind Sie sicher, dass Sie die Transformationen der ausgewählten Dokumente zurücksetzen wollen?" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "Keine weiteren Seiten in diesem Dokument" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Sie sind bereits auf der ersten Seite dieses Dokuments" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "%s drucken" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "Dokumentenbildercache löschen?" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "Löschung des Dokumentenbildcaches erfolgreich eingereiht." + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "Seite %(page_number)d von %(total_pages)d" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "Dokumentenseitenbild" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -917,9 +1008,6 @@ msgstr "Dokumentenseitenbild" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1063,9 +1151,6 @@ msgstr "Dokumentenseitenbild" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/en/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/en/LC_MESSAGES/django.mo index c26d0a4fd7..f30db75e07 100644 Binary files a/mayan/apps/documents/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/en/LC_MESSAGES/django.po b/mayan/apps/documents/locale/en/LC_MESSAGES/django.po index 48cc22a2d2..eebb6ed96b 100644 --- a/mayan/apps/documents/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" "PO-Revision-Date: 2013-11-20 11:36+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,94 +18,124 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 permissions.py:7 +#: settings.py:13 msgid "Documents" msgstr "Documents" -#: apps.py:98 +#: apps.py:110 +#, fuzzy +#| msgid "View document types" +msgid "New pages this month" +msgstr "View document types" + +#: apps.py:119 +#, fuzzy +#| msgid "New document filename" +msgid "New documents this month" +msgstr "New document filename" + +#: apps.py:128 +#, fuzzy +#| msgid "Transform documents" +msgid "Total documents" +msgstr "Transform documents" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +#, fuzzy +msgid "Document types" +msgstr "Document type" + +#: apps.py:140 views/document_views.py:69 +#, fuzzy +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "Documents in storage: %d" + +#: apps.py:145 #, fuzzy msgid "Create a document type" msgstr "Create document types" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "MIME type" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 #, fuzzy msgid "Thumbnail" msgstr "thumbnail" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 #, fuzzy msgid "Enabled" msgstr "enabled" -#: apps.py:188 +#: apps.py:253 #, fuzzy msgid "Date time trashed" msgstr "Date added" -#: apps.py:193 +#: apps.py:258 #, fuzzy msgid "Time and date" msgstr "time and date" -#: apps.py:201 views.py:830 +#: apps.py:266 #, fuzzy msgid "Encoding" msgstr "encoding" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Comment" -#: apps.py:387 +#: apps.py:456 #, fuzzy #| msgid "New document filename" msgid "New documents per month" msgstr "New document filename" -#: apps.py:394 +#: apps.py:463 #, fuzzy #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "Document version reverted successfully" -#: apps.py:401 +#: apps.py:470 #, fuzzy #| msgid "View document types" msgid "New document pages per month" msgstr "View document types" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -146,69 +176,78 @@ msgstr "Document version reverted successfully" msgid "Document viewed" msgstr "Document edited" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Page image" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, fuzzy, python-format msgid "Document pages (%d)" msgstr "Document pages (%s)" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Quick document rename" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Date added" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "" + #: forms.py:122 +msgid "Unknown" +msgstr "" + +#: forms.py:130 msgid "File mimetype" msgstr "File mimetype" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "None" -#: forms.py:126 +#: forms.py:134 #, fuzzy msgid "File encoding" msgstr "File mime encoding" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "File size" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Exists in storage" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "File path in storage" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Checksum" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Pages" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Document type" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Compress" -#: forms.py:192 +#: forms.py:197 #, fuzzy #| msgid "" #| "Download the document in the original format or in a compressed manner. " @@ -224,11 +263,11 @@ msgstr "" "This option is selectable only when downloading one document, for multiple " "documents, the bundle will always be downloads as a compressed file." -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Compressed filename" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." @@ -236,86 +275,99 @@ msgstr "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Page range" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 #, fuzzy msgid "Preview" msgstr "preview" -#: links.py:48 +#: links.py:50 #, fuzzy msgid "Properties" msgstr "properties" -#: links.py:53 +#: links.py:55 #, fuzzy msgid "Versions" msgstr "versions" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 #, fuzzy msgid "Clear transformations" msgstr "clear transformations" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +#, fuzzy +msgid "Clone transformations" +msgstr "clear transformations" + +#: links.py:76 links.py:120 links.py:247 links.py:261 #, fuzzy msgid "Delete" msgstr "delete" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 #, fuzzy msgid "Edit properties" msgstr "Edit document properties" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 #, fuzzy msgid "Change type" msgstr "page text" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Download" -#: links.py:91 +#: links.py:98 #, fuzzy msgid "Print" msgstr "print" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 #, fuzzy msgid "Download version" msgstr "document version" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 #, fuzzy msgid "All documents" msgstr "all documents" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 #, fuzzy msgid "Recent documents" msgstr "recent documents" -#: links.py:144 -msgid "Trash" -msgstr "" +#: links.py:151 +#, fuzzy +#| msgid "Transform documents" +msgid "Trash can" +msgstr "Transform documents" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." @@ -323,100 +375,94 @@ msgstr "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." -#: links.py:155 +#: links.py:162 #, fuzzy #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "Clear the document image cache" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 #, fuzzy msgid "First page" msgstr "first page" -#: links.py:172 +#: links.py:179 #, fuzzy msgid "Last page" msgstr "last page" -#: links.py:179 +#: links.py:186 #, fuzzy msgid "Previous page" msgstr "previous page" -#: links.py:185 +#: links.py:192 #, fuzzy msgid "Next page" msgstr "next page" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 #, fuzzy msgid "Document" msgstr "Documents" -#: links.py:196 +#: links.py:203 #, fuzzy msgid "Rotate left" msgstr "rotate left" -#: links.py:201 +#: links.py:208 #, fuzzy msgid "Rotate right" msgstr "rotate right" -#: links.py:209 +#: links.py:216 #, fuzzy msgid "Reset view" msgstr "reset view" -#: links.py:214 +#: links.py:221 #, fuzzy msgid "Zoom in" msgstr "zoom in" -#: links.py:219 +#: links.py:227 #, fuzzy msgid "Zoom out" msgstr "zoom out" -#: links.py:227 +#: links.py:236 #, fuzzy msgid "Revert" msgstr "revert" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 #, fuzzy msgid "Create document type" msgstr "Create document types" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "" -#: links.py:247 +#: links.py:256 #, fuzzy msgid "Add quick label to document type" msgstr "add filename to document type" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -#, fuzzy -msgid "Document types" -msgstr "Document type" - #: literals.py:14 msgid "Default" msgstr "" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -458,111 +504,109 @@ msgstr "Delete documents" msgid "Documents types" msgstr "documents types" -#: models.py:158 +#: models.py:153 #, fuzzy msgid "The name of the document" msgstr "Create documents" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Description" -#: models.py:164 +#: models.py:159 #, fuzzy msgid "Added" msgstr "added" -#: models.py:169 -msgid "Language" -msgstr "" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 #, fuzzy msgid "Date and time trashed" msgstr "Date added" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, fuzzy, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "Document types: %d" -#: models.py:354 +#: models.py:348 #, fuzzy msgid "Timestamp" msgstr "timestamp" -#: models.py:363 +#: models.py:357 #, fuzzy msgid "File" msgstr "Filename" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 #, fuzzy msgid "Document version" msgstr "document version" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 #, fuzzy msgid "Page number" msgstr "page number" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Page %(page_num)d out of %(total_pages)d of %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 #, fuzzy msgid "Document page" msgstr "document page" -#: models.py:673 +#: models.py:665 models.py:817 #, fuzzy msgid "Document pages" msgstr "document pages" -#: models.py:783 -#, fuzzy -#| msgid "Version update" -msgid "New version block" -msgstr "Version update" +#: models.py:801 +msgid "Filename" +msgstr "Filename" -#: models.py:784 +#: models.py:804 #, fuzzy -#| msgid "Version update" -msgid "New version blocks" -msgstr "Version update" +msgid "Document page cached image" +msgstr "document page image" -#: models.py:794 +#: models.py:805 +#, fuzzy +msgid "Document page cached images" +msgstr "document page image" + +#: models.py:827 msgid "User" msgstr "" -#: models.py:800 +#: models.py:833 #, fuzzy msgid "Accessed" msgstr "accessed" -#: models.py:814 +#: models.py:847 #, fuzzy msgid "Recent document" msgstr "recent document" @@ -581,7 +625,7 @@ msgstr "Delete documents" msgid "Trash documents" msgstr "Transform documents" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Download documents" @@ -641,7 +685,7 @@ msgstr "Edit document types" msgid "View document types" msgstr "View document types" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per " "user." @@ -649,11 +693,11 @@ msgstr "" "Maximum number of recent (created, edited, viewed) documents to remember per " "user." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Amount in percent zoom in or out a document page per user interaction." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." @@ -661,7 +705,7 @@ msgstr "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." @@ -669,238 +713,226 @@ msgstr "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Amount in degrees to rotate a document page per user interaction." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#, fuzzy -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "Clear the document image cache" - -#: views.py:75 -#, fuzzy -msgid "Document cache clearing queued successfully." -msgstr "Document image cache cleared successfully" - -#: views.py:100 -#, fuzzy -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "Documents in storage: %d" - -#: views.py:122 -#, fuzzy -msgid "Delete the selected document?" -msgstr "Create documents" - -#: views.py:145 -#, fuzzy, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "Document \"%(document)s\" deleted by %(fullname)s." - -#: views.py:153 -#, fuzzy -msgid "Delete the selected documents?" -msgstr "Create documents" - -#: views.py:175 -#, fuzzy, python-format -msgid "Edit properties of document: %s" -msgstr "document properties for: %s" - -#: views.py:191 -#, fuzzy -msgid "Restore the selected document?" -msgstr "Create documents" - -#: views.py:216 -#, fuzzy, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "Document: %(document)s delete error: %(error)s" - -#: views.py:224 -#, fuzzy -msgid "Restore the selected documents?" -msgstr "Create documents" - -#: views.py:256 +#: views/document_page_views.py:49 #, fuzzy, python-format msgid "Pages for document: %s" msgstr "versions for document: %s" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "There are no more pages in this document" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "You are already at the first page of this document" + +#: views/document_page_views.py:178 #, fuzzy, python-format msgid "Image of: %s" msgstr "duplicates of: %s" -#: views.py:330 -#, fuzzy, python-format -msgid "Preview of document: %s" -msgstr "versions for document: %s" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, fuzzy, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "Document deleted successfully." - -#: views.py:378 -#, fuzzy -msgid "Move the selected documents to the trash?" -msgstr "Create documents" - -#: views.py:393 +#: views/document_type_views.py:38 #, fuzzy, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "documents of type \"%s\"" -#: views.py:430 +#: views/document_type_views.py:75 #, fuzzy msgid "All documents of this type will be deleted too." msgstr "All later version after this one will be deleted too." -#: views.py:432 +#: views/document_type_views.py:77 #, fuzzy, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "Delete document types" -#: views.py:448 +#: views/document_type_views.py:93 #, fuzzy, python-format msgid "Edit document type: %s" msgstr "edit document type: %s" -#: views.py:478 +#: views/document_type_views.py:118 #, fuzzy, python-format msgid "Create quick label for document type: %s" msgstr "create filename for document type: %s" -#: views.py:499 +#: views/document_type_views.py:139 #, fuzzy, python-format msgid "" "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" "edit filename \"%(filename)s\" from document type \"%(document_type)s\"" -#: views.py:524 +#: views/document_type_views.py:164 #, fuzzy, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" "edit filename \"%(filename)s\" from document type \"%(document_type)s\"" -#: views.py:552 +#: views/document_type_views.py:192 #, fuzzy, python-format msgid "Quick labels for document type: %s" msgstr "filenames for document type: %s" -#: views.py:583 +#: views/document_version_views.py:42 #, fuzzy, python-format msgid "Versions of document: %s" msgstr "versions for document: %s" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "All later version after this one will be deleted too." -#: views.py:600 +#: views/document_version_views.py:59 #, fuzzy #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "Revert documents to a previous version" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Document version reverted successfully" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Error reverting document version; %s" -#: views.py:633 +#: views/document_views.py:81 +#, fuzzy +msgid "Delete the selected document?" +msgstr "Create documents" + +#: views/document_views.py:100 +#, fuzzy, python-format +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." +msgstr "Document \"%(document)s\" deleted by %(fullname)s." + +#: views/document_views.py:108 +#, fuzzy +msgid "Delete the selected documents?" +msgstr "Create documents" + +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" +msgstr "" + +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" + +#: views/document_views.py:130 +#, fuzzy +msgid "Change" +msgstr "page text" + +#: views/document_views.py:132 +#, fuzzy +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "Create documents" +msgstr[1] "Create documents" + +#: views/document_views.py:143 +#, fuzzy, python-format +msgid "Change the type of the document: %s" +msgstr "Create documents" + +#: views/document_views.py:164 +#, fuzzy, python-format +msgid "Document type for \"%s\" changed successfully." +msgstr "Document type: %s deleted successfully." + +#: views/document_views.py:184 +#, fuzzy, python-format +msgid "Edit properties of document: %s" +msgstr "document properties for: %s" + +#: views/document_views.py:200 +#, fuzzy +msgid "Restore the selected document?" +msgstr "Create documents" + +#: views/document_views.py:221 +#, fuzzy, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." +msgstr "Document: %(document)s delete error: %(error)s" + +#: views/document_views.py:229 +#, fuzzy +msgid "Restore the selected documents?" +msgstr "Create documents" + +#: views/document_views.py:256 +#, fuzzy, python-format +msgid "Preview of document: %s" +msgstr "versions for document: %s" + +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" +msgstr "" + +#: views/document_views.py:287 +#, fuzzy, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "Document deleted successfully." + +#: views/document_views.py:300 +#, fuzzy +msgid "Move the selected documents to the trash?" +msgstr "Create documents" + +#: views/document_views.py:318 #, fuzzy, python-format msgid "Properties for document: %s" msgstr "versions for document: %s" -#: views.py:639 +#: views/document_views.py:324 msgid "Empty trash?" msgstr "" -#: views.py:650 +#: views/document_views.py:335 #, fuzzy #| msgid "Document deleted successfully." msgid "Trash emptied successfully" msgstr "Document deleted successfully." -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Must provide at least one document." - -#: views.py:704 +#: views/document_views.py:519 #, fuzzy, python-format -msgid "Document type for \"%s\" changed successfully." -msgstr "Document type: %s deleted successfully." - -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "" - -#: views.py:720 -#, fuzzy -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "Create documents" -msgstr[1] "Create documents" - -#: views.py:799 -#, fuzzy -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." -msgstr "Must provide at least one document." - -#: views.py:819 -#, fuzzy -msgid "Documents to be downloaded" -msgstr "documents to be downloaded" - -#: views.py:828 -#, fuzzy -msgid "Date and time" -msgstr "Date added" - -#: views.py:931 -msgid "At least one document must be selected." -msgstr "" - -#: views.py:954 -#, fuzzy -msgid "Document queued for page count recalculation." +msgid "%(count)d document queued for page count recalculation" msgstr "document page transformation" -#: views.py:955 -msgid "Documents queued for page count recalculation." -msgstr "" +#: views/document_views.py:522 +#, fuzzy, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "document page transformation" -#: views.py:964 +#: views/document_views.py:530 #, fuzzy msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" @@ -909,56 +941,127 @@ msgstr[0] "" msgstr[1] "" "Are you sure you wish to update the page count for the office documents (%d)?" -#: views.py:1023 -#, python-format -msgid "" -"Error deleting the page transformations for document: %(document)s; " -"%(error)s." +#: views/document_views.py:541 +#, fuzzy, python-format +msgid "Recalculate the page count of the document: %s?" msgstr "" -"Error deleting the page transformations for document: %(document)s; " -"%(error)s." +"Are you sure you wish to update the page count for the office documents (%d)?" -#: views.py:1032 +#: views/document_views.py:558 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." +msgid "Transformation clear request processed for %(count)d document" msgstr "" -"All the page transformations for document: %s, have been deleted " -"successfully." -#: views.py:1044 +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 #, fuzzy msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" +msgid_plural "Clear all the page transformations for the selected document?" msgstr[0] "" "Are you sure you wish to clear all the page transformations for document: %s?" msgstr[1] "" "Are you sure you wish to clear all the page transformations for document: %s?" -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "There are no more pages in this document" +#: views/document_views.py:580 +#, fuzzy, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" +"Are you sure you wish to clear all the page transformations for document: %s?" -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "You are already at the first page of this document" +#: views/document_views.py:595 views/document_views.py:623 +#, python-format +msgid "" +"Error deleting the page transformations for document: %(document)s; " +"%(error)s." +msgstr "" +"Error deleting the page transformations for document: %(document)s; " +"%(error)s." -#: views.py:1225 views.py:1234 +#: views/document_views.py:631 +#, fuzzy +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "Document page transformation created successfully." + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "" + +#: views/document_views.py:648 +#, fuzzy, python-format +msgid "Clone page transformations for document: %s" +msgstr "" +"Are you sure you wish to clear all the page transformations for document: %s?" + +#: views/document_views.py:702 #, fuzzy, python-format msgid "Print: %s" msgstr "print: %s" -#: widgets.py:71 +#: views/misc_views.py:18 +#, fuzzy +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "Clear the document image cache" + +#: views/misc_views.py:25 +#, fuzzy +msgid "Document cache clearing queued successfully." +msgstr "Document image cache cleared successfully" + +#: widgets.py:64 #, fuzzy, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "Page %(page_num)d out of %(total_pages)d of %(document)s" -#: widgets.py:100 +#: widgets.py:87 +#, fuzzy +#| msgid "Page image" +msgid "Clickable image" +msgstr "Page image" + +#: widgets.py:242 #, fuzzy msgid "Document page image" msgstr "document page image" +#, fuzzy +#~| msgid "Version update" +#~ msgid "New version block" +#~ msgstr "Version update" + +#, fuzzy +#~| msgid "Version update" +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#, fuzzy +#~| msgid "Must provide at least one document." +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#, fuzzy +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#, fuzzy +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #, fuzzy #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -1041,9 +1144,6 @@ msgstr "document page image" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #, fuzzy #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1208,9 +1308,6 @@ msgstr "document page image" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "" #~ "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" diff --git a/mayan/apps/documents/locale/es/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/es/LC_MESSAGES/django.mo index 6eb718ec36..d271fdb9a9 100644 Binary files a/mayan/apps/documents/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/es/LC_MESSAGES/django.po b/mayan/apps/documents/locale/es/LC_MESSAGES/django.po index 3706bc5f8f..970d66ac9e 100644 --- a/mayan/apps/documents/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/es/LC_MESSAGES/django.po @@ -4,13 +4,13 @@ # # Translators: # Translators: -# Roberto Rosario, 2015-2016 +# Roberto Rosario, 2015-2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-11-23 06:45+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 17:56+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -19,85 +19,110 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Documentos" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "Nuevas páginas este mes" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "Nuevos documentos este mes" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "Total de documentos" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "Tipos de documentos" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "Documentos en la papelera" + +#: apps.py:145 msgid "Create a document type" msgstr "Crear tipo un tipo de documento" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "Etiqueta" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "Tipo MIME" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "Foto miniatura" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "Tipo" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "Activado" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "Fecha y hora de envío a papelera " -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "Hora y fecha" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "Codificación" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Comentario" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "Nuevos documentos por mes" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "Nuevas versiones de documentos por mes" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "Nuevas páginas de documentos por mes" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "Total de documentos cada mes" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "Total de versiones de documentos cada mes" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "Total de páginas de documentos cada mes" @@ -131,68 +156,77 @@ msgstr "Versión de documento revertida" msgid "Document viewed" msgstr "Documento visualizado" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Imagen de la página" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "Páginas del documento (%d)" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Cambio rápido de nombre" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Fecha en que se agregó" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "Lenguaje" + #: forms.py:122 +msgid "Unknown" +msgstr "Desconocido" + +#: forms.py:130 msgid "File mimetype" msgstr "Tipo MIME del archivo" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Ninguno" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "Codificación de archivo" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Tamaño del archivo" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Existe en el almacenamiento" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Ruta de archivo en el almacenamiento" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Suma de comprobación" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Páginas" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Tipo de documento" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Comprimir" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -203,169 +237,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "Descargue el documento en el formato original o en una forma comprimida. Esta opción se puede seleccionar sólo cuando se descarga un documento. Para múltiples documentos, el paquete será siempre descargado en un archivo comprimido." -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Nombre de archivo comprimido" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "El nombre del archivo comprimido que va a contener los documentos a descargar, si la opción anterior está activada." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Rango de páginas" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "Muestra" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "Propiedades" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "Versiones" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "Borrar transformaciones" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "Clonar transformaciones" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "Borrar" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "Mover a la papelera" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "Editar propiedades" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "Cambiar tipo" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Descargar" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "Imprimir" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "Recalcular el conteo de páginas" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "Resturar" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "Descarga de versión" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "Todos los documentos" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "Documentos recientes" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "Papelera" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Borrar las representaciones gráficas utilizadas para acelerar la presentación de los documentos y resultados de las transformaciones interactivas." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "Borrar la caché de imágenes de documentos" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "Vaciar papelera" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "Primera página" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "Última página" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "Página previa" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "Próxima página" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "Documento" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "Rotar a la izquierda" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "Rotar a la derecha" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "Reestablecer vista" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "Acercar imagen" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "Alejar imagen" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "Revertir" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "Crear tipo de documento" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "Editar" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "Añadir nombre típico al tipo de documento" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "Nombres típicos " -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "Tipos de documentos" - #: literals.py:14 msgid "Default" msgstr "Por defecto" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "Todas las páginas" @@ -403,99 +443,97 @@ msgstr "Unidad de tiempo de eliminación" msgid "Documents types" msgstr "Tipos de documentos" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "El nombre del documento" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Descripción" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "Añadido" -#: models.py:169 -msgid "Language" -msgstr "Lenguaje" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "¿En la papelera?" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "Fecha y hora de envío a papelera" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "¿Es un recibo?" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "Recibo de documento, id: %d" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "Marca de tiempo" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "Archivo" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "Versión de documento" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "Etiqueta rapida" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "Número de página" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Página %(page_num)d de %(total_pages)d de %(document)s " -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "Página de documento" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "Páginas de documento" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" -msgstr "Bloquear nueva version" +#: models.py:801 +msgid "Filename" +msgstr "Nombre del archivo" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" -msgstr "Bloquear nuevas versiones" +#: models.py:804 +msgid "Document page cached image" +msgstr "" -#: models.py:794 +#: models.py:805 +msgid "Document page cached images" +msgstr "" + +#: models.py:827 msgid "User" msgstr "Usuario" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "Accedido" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "Documento reciente" @@ -512,7 +550,7 @@ msgstr "Eliminar documentos" msgid "Trash documents" msgstr "Enivar documentos a la papelera" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Descargar documentos" @@ -570,288 +608,340 @@ msgstr "Editar tipos de documentos" msgid "View document types" msgstr "Ver los tipos de documentos" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "El número máximo de documentos recientes (creados, editados, vistos) a recordar por usuario." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Cantidad en porcentaje a acercar o alejar una página de documento por cada interacción del usuario." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Cantidad máxima en porcentaje (%) a permitir al usuario aumentar la página del documento de forma interactiva." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Cantidad mínima en porcentaje (%) a permitir al usuario disminuir la página del documento de forma interactiva." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Cantidad de grados que se va a girar una página de documento por cada acción del usuario." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "Idioma por defecto para documentos (en formato ISO639-2)." -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "Lista de idiomas de documento apoyados." -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "¿Borrar la caché de imágenes de documentos?" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "Caché de documentos borrara con éxito." - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "Documentos en la papelera" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "¿Eliminar el documento seleccionado?" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "Documento: %(document)s eliminado." - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "¿Eliminar los documentos seleccionados?" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "Editar propiedades del documento: %s" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "¿Restaurar el documento seleccionado?" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "Documento: %(document)s restaurado." - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "¿Restaurar los documentos seleccionados?" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "Pagínas para documento: %s" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "No hay más páginas en este documento" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Usted ya está en la primera página de este documento" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "Imágen de: %s" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "Visualización del documento: %s" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "¿Mover \"%s\" a la papelera?" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "Documento: %(document)s movido a la papelera." - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "¿Mover los documentos seleccionados a la papelera?" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "Documentos de tipo: %s" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "Todos los documentos de este tipo serán borrados también" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "¿Eliminar el tipo de documento: %s?" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "Editar tipo de documento: %s" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "Nombre típicos para el tipo de documento: %s" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "Versiones del documento: %s" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "También se borrarán todas las versiones más recientes a esta." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "¿Revertir a esta versión?" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Versión de documento revertida con éxito." -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Error revirtiendo la versión del documento; %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "¿Eliminar el documento seleccionado?" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" -msgstr "Propiedades para el documento: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." +msgstr "Documento: %(document)s eliminado." -#: views.py:639 -msgid "Empty trash?" -msgstr "¿Vaciar papelera?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" +msgstr "¿Eliminar los documentos seleccionados?" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" -msgstr "Papelera vaciada con éxito" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" +msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Debe proveer al menos un documento" +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "Cambiar" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "Tipo de documento para \"%s\" cambiado con éxito." -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "Enviar" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" +msgstr "Editar propiedades del documento: %s" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "Cambiar el tipo del documento seleccionado." -msgstr[1] "Cambiar el tipo de los documentos seleccionados." +#: views/document_views.py:200 +msgid "Restore the selected document?" +msgstr "¿Restaurar el documento seleccionado?" -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." -msgstr "Debe proveer al menos una versión de documento." +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." +msgstr "Documento: %(document)s restaurado." -#: views.py:819 -msgid "Documents to be downloaded" -msgstr "Documentos a descargar" +#: views/document_views.py:229 +msgid "Restore the selected documents?" +msgstr "¿Restaurar los documentos seleccionados?" -#: views.py:828 -msgid "Date and time" -msgstr "Fecha y hora" +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" +msgstr "Visualización del documento: %s" -#: views.py:931 -msgid "At least one document must be selected." -msgstr "Al menos un documento debe ser seleccionado." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" +msgstr "¿Mover \"%s\" a la papelera?" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "Documento: %(document)s movido a la papelera." + +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "¿Mover los documentos seleccionados a la papelera?" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "Propiedades para el documento: %s" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "¿Vaciar papelera?" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "Papelera vaciada con éxito" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" msgstr "" -#: views.py:964 +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" msgstr[1] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Error al eliminar las transformaciones de página para el documento: %(document)s; %(error)s." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "Enviar" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Todas las transformaciones de la página del documento: %s, se han eliminado con éxito." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "¿Borrar todas las transformaciones para el documento seleccionado?" -msgstr[1] "¿Borrar todas las transformaciones para los documentos seleccionados?" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "No hay más páginas en este documento" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Usted ya está en la primera página de este documento" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "Imprimir: %s" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "¿Borrar la caché de imágenes de documentos?" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "Caché de documentos borrara con éxito." + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "Página %(page_number)d de %(total_pages)d" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "Imagen de página de documento" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -915,9 +1005,6 @@ msgstr "Imagen de página de documento" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1061,9 +1148,6 @@ msgstr "Imagen de página de documento" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/fa/LC_MESSAGES/django.mo index 670f98d5e2..3e5e4550d7 100644 Binary files a/mayan/apps/documents/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/fa/LC_MESSAGES/django.po b/mayan/apps/documents/locale/fa/LC_MESSAGES/django.po index 5b583d8e16..df2327fb6a 100644 --- a/mayan/apps/documents/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/fa/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -18,85 +18,110 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "اسناد" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "انواع سند" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "برچسب" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "نوع MIME" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "اندازه کوچک" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "نوع" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "فعال شده" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "تاریخ و زمان" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "Encoding" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "شرح" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -130,68 +155,77 @@ msgstr "" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "تصویر صفحه" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "تعداد صفحات سند (%d)" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "نامگذاری سریع سند " -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "تاریخ اضافه شدن" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "زبان" + #: forms.py:122 +msgid "Unknown" +msgstr "ناشناخته" + +#: forms.py:130 msgid "File mimetype" msgstr "File mimetype" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "هیچکدام." -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "فایل Encoding" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "اندازه فایل" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "موجود در مخزن" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "آدرس فایل در مخزن" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "چک سام" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "صفحات" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "نوع سند" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "فشرده سازی" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -202,169 +236,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "نام فایل فشرده شده" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "اگر انتخاب قبلی انجام شده، نام فایل فشرده شده که شامل کلیه فایلهای که قراراست که دانلود شوند." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "محدوده صفحات" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "پیش دید ویا دیدن" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "خصوصیات" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "نسخه ها" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "پاک کردن تبدیلات" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "حذف" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "ویرایش خصوصیات" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "تغییر نوع" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "دانلود" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "چاپ" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "کلیه اسناد" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "اسناد تازه" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "پاک کردن نحوه نمایش اسناد که در زمان سرعت بخشی به نمایش اسناد مورد استفاده قرار میگیرد." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "اولین صفحه" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "آخرین صفحه" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "صفحه قبلی" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "صفحه بعدی" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "سند" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "چرخش به چپ" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "چرجش به راست" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "ریست ویو Reset View" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "بزرگنمایی" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "کوچک نمایی" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "بازگرداندن" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "ایجاد نوع سند" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "ویرایش" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "انواع سند" - #: literals.py:14 msgid "Default" msgstr "پیش فرض" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -402,99 +442,97 @@ msgstr "" msgid "Documents types" msgstr "انواع اسناد" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "نام سند" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "توضیحات" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "اضافه شده" -#: models.py:169 -msgid "Language" -msgstr "زبان" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "علامت زمان" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "فایل" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "نسخه سند" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "شماره صفحه" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "صفحه شماره%(page_num)d از%(total_pages)d از سند %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "صفحه سند" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "صفحات سند" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "نام فایل" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "کاربر" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "دسترسی یافته" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "سند تازه" @@ -511,7 +549,7 @@ msgstr "حذف سند" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "دانلود اسناد" @@ -569,285 +607,337 @@ msgstr "ویرایش انواع سند" msgid "View document types" msgstr "بازدید انواع سند" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "حداکثر تعداد اسناد تازه (ایجاد، ویرایش و بازبینی) که جهت هرکاربر بوسیله سیستم نگهداری شود." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "اندازه بزرگنمایی/کوچک نمایی یک صفحه از سند جهت تعامل با هرکاربر" -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "حداکثر درصد(%) اندازه بزرگنمایی بوسیله کاربر برروی یک صفحه از سند بصورت تعاملی" -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "حداکثر درصد(%) اندازه کوچک نمایی بوسیله کاربر برروی یک صفحه از سند بصورت تعاملی" -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "مقدار درچه چرخش یک صفحه از سند به ازای هر کاربر" -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "زبان پیش فرض اسناد (in ISO639-2) میباشد." -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "لیست زبانهای پشتیبانی سند" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "ویرایش خصوصیات سند : %s" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "پایان صفحات سند" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "شما در حال حاضر برروی اولین صفحه این سند میباشید." + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "پیش نمایش سند : %s" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "کلیه اسناد از این نوع حذف خواهند شد." -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "ویرایش نوع سند : %s" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "نسخ سند : %s" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "همجنین کلیه نسخه های بعد از این نسخه حذف خواهند گردید." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "بازگشت موفق نسخه سند." -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "خطا در بازگشت نسخه سند: %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" -msgstr "خصوصیات سند : %s" - -#: views.py:639 -msgid "Empty trash?" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "حداقل یک سند باید ارایه شود." +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" +msgstr "" -#: views.py:704 +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" + +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "ارسال" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" +msgstr "ویرایش خصوصیات سند : %s" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "" - -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" -msgstr "اسنادی که قرار است دانلود شوند." - -#: views.py:828 -msgid "Date and time" -msgstr "تاریخ و زمان" - -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" +msgstr "پیش نمایش سند : %s" + +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" msgstr "" -#: views.py:964 +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "" + +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "خصوصیات سند : %s" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "خطا %(error)s در زمان حذف تبدیلات سند %(document)s" -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "ارسال" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "حذف کامل کلیه تبدیلات سند %s" +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "پایان صفحات سند" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "شما در حال حاضر برروی اولین صفحه این سند میباشید." - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "چاپ : %s" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "صفحه%(page_number)d از %(total_pages)d" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "عکس صفحه سند" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -911,9 +1001,6 @@ msgstr "عکس صفحه سند" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1056,9 +1143,6 @@ msgstr "عکس صفحه سند" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/fr/LC_MESSAGES/django.mo index 4f8ca0d1a0..a72c572a99 100644 Binary files a/mayan/apps/documents/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/fr/LC_MESSAGES/django.po b/mayan/apps/documents/locale/fr/LC_MESSAGES/django.po index d688a7ab21..4a438e8064 100644 --- a/mayan/apps/documents/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/fr/LC_MESSAGES/django.po @@ -5,13 +5,14 @@ # Translators: # Translators: # Bruno CAPELETO , 2016 +# Christophe CHAUVET , 2016 # Thierry Schott , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" @@ -20,85 +21,110 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Documents" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "Types de documents" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "Documents dans la corbeille" + +#: apps.py:145 msgid "Create a document type" msgstr "Créer un type de document" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "Chaque document téléchargé doit être associé à un type de document, cela permet à Mayan EDMS de catégoriser les documents." -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "Libellé" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "Type MIME d'une version quelconque d'un document" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "Type MIME" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "Vignette" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "Type" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "Activé" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "Date et heure d'envoi à la corbeille" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "Heure et date" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "Encodage" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Commentaire" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "Nouveaux documents par mois" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "Nouvelles versions de document par mois" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "Nouvelles pages de document par mois" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "Nombre total de documents chaque mois" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "Nombre total de versions de documents chaque mois" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "Nombre total de pages de documents chaque mois" @@ -132,68 +158,77 @@ msgstr "Retour à la version précédente du document" msgid "Document viewed" msgstr "Document consulté" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Image de la page" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "Pages (%d) du document" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Renommage rapide du document" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Date d'ajout" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "Langue" + #: forms.py:122 +msgid "Unknown" +msgstr "Inconnu" + +#: forms.py:130 msgid "File mimetype" msgstr "Type MIME du fichier" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Aucun" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "Encodage du fichier" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Taille du fichier" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Présent dans le stockage local" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Chemin du fichier dans le stockage local" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Somme de contrôle" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Pages" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Type de document" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Compresser" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -204,169 +239,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "Télécharger le document dans son format original ou sous forme d'archive compressée. Cette option est uniquement disponible lors du téléchargement d'un document, lors du téléchargement d'un groupe de documents, ce dernier sera toujours téléchargé en tant qu'archive compressée." -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Nom du fichier compressé" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "Le nom de fichier du fichier compressé qui contiendra les documents à importer, si l'option précédente est sélectionnée." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Ensemble de pages" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "Prévisualiser" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "Propriétés" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "Versions" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "Effacer les transformations" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "Supprimer" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "Envoyer à la corbeille" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "Modifier les propriétés" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "Changer le type" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Télécharger" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "Imprimer" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "Réinitialiser le comptage de page" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "Restaurer" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "Télécharger cette version" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "Tous les documents" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "Documents récents" -#: links.py:144 -msgid "Trash" -msgstr "Corbeille" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" +msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Effacer les représentations graphiques utilisées pour accélérer l'affichage du document et le résultat des transformations interactives." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "Effacer les documents du cache" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "Vider la corbeille" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "Première page" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "Dernière page" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "Page précédente" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "Page suivante" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "Document" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "Rotation à gauche" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "Rotation à droite" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "Réinitialiser la vue" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "Zoom avant" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "Zoom arrière" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "Rétablir" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "Créer un type de document" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "Modifier" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "Ajouter une étiquette rapide au document" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "Etiquettes rapides" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "Types de documents" - #: literals.py:14 msgid "Default" msgstr "Défaut" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "Toutes les pages" @@ -404,99 +445,97 @@ msgstr "Unité de temps avant suppression" msgid "Documents types" msgstr "Types de documents" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "Le nom du document" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Description" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "Ajouté" -#: models.py:169 -msgid "Language" -msgstr "Langue" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "Présent dans la corbeille ?" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "Date et heure d'envoi à la corbeille" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "Un document parcellaire est un document avec une entrée en base de données mais aucun fichier téléchargé. Cela peut correspondre à un téléchargement interrompu ou à un téléchargement retardé par l'API." -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "Parcellaire ?" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "Parcelle de document, id : %d" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "Horodatage" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "Fichier" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "Version du document" -#: models.py:633 +#: models.py:625 msgid "Quick label" -msgstr "Renommage rapide" +msgstr "Étiquetage rapide" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "Numéro de page" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Page %(page_num)d sur %(total_pages)d de %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "Page du document" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "Pages du document" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" -msgstr "Bloc de la nouvelle version" +#: models.py:801 +msgid "Filename" +msgstr "Nom de fichier" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" -msgstr "Blocs de la nouvelle version" +#: models.py:804 +msgid "Document page cached image" +msgstr "" -#: models.py:794 +#: models.py:805 +msgid "Document page cached images" +msgstr "" + +#: models.py:827 msgid "User" msgstr "Utilisateur" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "Consulté" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "Document récent" @@ -513,7 +552,7 @@ msgstr "Supprimer les documents" msgid "Trash documents" msgstr "Envoyer les documents à la corbeille" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Télécharger les documents" @@ -537,7 +576,7 @@ msgstr "Imprimer les documents" #: permissions.py:34 #| msgid "Delete documents" msgid "Restore trashed document" -msgstr "" +msgstr "Restaurer le document mis à la corbeille" #: permissions.py:37 msgid "Execute document modifying tools" @@ -571,288 +610,340 @@ msgstr "Modifier les types de documents" msgid "View document types" msgstr "Afficher les types de documents" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Nombre maximum de documents récents (créés, modifiés, visualisés) à mémoriser par utilisateur." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Valeur en pourcentage du zoom avant ou arrière pour une page de document pour les utilisateurs." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Maximum en pourcents (%) de la valeur du zoom avant interactif autorisé pour l'utilisateur." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Minimum en pourcents (%) de la valeur du zoom arrière interactif autorisé pour l'utilisateur." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Valeur en degrés pour la rotation d'une page de document par l'utilisateur." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "Langue des documents par défaut (au format ISO639-2)." -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "Liste des langues supportées du document." -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "Vider l'image en cache du document" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "Demande de nettoyage du cache de documents mise en file d'attente avec succès." - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "Documents dans la corbeille" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "Êtes vous sûr de vouloir supprimer le document sélectionné ?" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "Document %(document)s supprimé." - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "Êtes vous sûr de vouloir supprimer les documents sélectionnés ?" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "Modifier les propriétés du document : %s" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "Êtes vous sûr de vouloir rétablir le document sélectionné ?" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "Document %(document)s rétabli." - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "Êtes vous sûr de vouloir rétablir les documents sélectionnés ?" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "Pages du document : %s" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "Il n'y a pas d'autres pages dans ce document" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Vous êtes déjà sur la première page du document" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "Image de : %s" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "Aperçu du document : %s" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "Etes-vous sûr de vouloir envoyer \"%s\" à la corbeille ?" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "Document : %(document)s envoyé à la corbeille avec succès." - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "Êtes vous sûr de vouloir envoyer les documents sélectionnés à la corbeille ?" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "Documents du type : %s" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "Tous les documents de ce type seront également effacés." -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "Êtes-vous sûr de vouloir supprimer le type de document : %s ?" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "Modifier le type de document : %s" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "Créer une étiquette rapide pour le type de document : %s" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "Modifier l'étiquette rapide \"%(filename)s\" du type de document \"%(document_type)s\"" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "Etes-vous sûr de vouloir supprimer l'étiquette rapide %(label)s du type de document \"%(document_type)s\" ?" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "Etiquettes rapides pour le type de document : %s" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "Versions du document : %s" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Toutes les versions postérieures à celle-ci seront également supprimées." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "Êtes vous certain de vouloir revenir à cette version ?" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Retour à la version précédente du document effectuée avec succès" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Erreur lors du retour à une version précédente du document : %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "Êtes vous sûr de vouloir supprimer le document sélectionné ?" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" -msgstr "Propriétés du document : %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." +msgstr "Document %(document)s supprimé." -#: views.py:639 -msgid "Empty trash?" -msgstr "Vider la corbeille ?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" +msgstr "Êtes vous sûr de vouloir supprimer les documents sélectionnés ?" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" -msgstr "Corbeille vidée avec succès" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" +msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Au moins un document est requis." +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "Type de document pour \"%s\" changé." -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "Soumettre" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" +msgstr "Modifier les propriétés du document : %s" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "Modifier le type du document sélectionné." -msgstr[1] "Modifier le type des documents sélectionnés." +#: views/document_views.py:200 +msgid "Restore the selected document?" +msgstr "Êtes vous sûr de vouloir rétablir le document sélectionné ?" -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." -msgstr "Vous devez fournir au moins un document ou une version" +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." +msgstr "Document %(document)s rétabli." -#: views.py:819 -msgid "Documents to be downloaded" -msgstr "Documents à télécharger" +#: views/document_views.py:229 +msgid "Restore the selected documents?" +msgstr "Êtes vous sûr de vouloir rétablir les documents sélectionnés ?" -#: views.py:828 -msgid "Date and time" -msgstr "Date et heure" +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" +msgstr "Aperçu du document : %s" -#: views.py:931 -msgid "At least one document must be selected." -msgstr "Au moins un document doit être sélectionné" +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" +msgstr "Etes-vous sûr de vouloir envoyer \"%s\" à la corbeille ?" -#: views.py:954 -msgid "Document queued for page count recalculation." -msgstr "Document en file d'attente pour recomptage du nombre de pages." +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "Document : %(document)s envoyé à la corbeille avec succès." -#: views.py:955 -msgid "Documents queued for page count recalculation." -msgstr "Documents en file d'attente pour recalcul du nombre de pages." +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "Êtes vous sûr de vouloir envoyer les documents sélectionnés à la corbeille ?" -#: views.py:964 +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "Propriétés du document : %s" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "Vider la corbeille ?" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "Corbeille vidée avec succès" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "Êtes vous sûr de vouloir recalculer le nombre de pages du document sélectionné ?" msgstr[1] "Êtes vous sûr de vouloir recalculer le nombre de pages des documents sélectionnés ?" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Erreur lors de la suppression des transformations de page pour le document : %(document)s; %(error)s." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "Soumettre" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Toutes les transformations de page pour le document : %s ont été supprimées avec succès." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "Êtes-vous sûr de vouloir supprimer toutes les transformations de page pour le document sélectionné ?" -msgstr[1] "Êtes-vous sûr de vouloir supprimer toutes les transformations de page pour les documents sélectionnés ?" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "Il n'y a pas d'autres pages dans ce document" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Vous êtes déjà sur la première page du document" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "Imprimer : %s" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "Vider l'image en cache du document" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "Demande de nettoyage du cache de documents mise en file d'attente avec succès." + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "Page %(page_number)d sur %(total_pages)d" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "Image de la page du document" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -916,9 +1007,6 @@ msgstr "Image de la page du document" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1062,9 +1150,6 @@ msgstr "Image de la page du document" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/hu/LC_MESSAGES/django.mo index 9dace9aa6a..b2925cc51d 100644 Binary files a/mayan/apps/documents/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/hu/LC_MESSAGES/django.po b/mayan/apps/documents/locale/hu/LC_MESSAGES/django.po index 30c0efa323..db04312c24 100644 --- a/mayan/apps/documents/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/hu/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -18,85 +18,110 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "dokumentumok" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "MIME típus" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Megjegyzés" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -130,68 +155,77 @@ msgstr "" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Oldal kép" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Dokumentum gyors átnevezése" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Dátum megadása" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "" + #: forms.py:122 +msgid "Unknown" +msgstr "" + +#: forms.py:130 msgid "File mimetype" msgstr "Fájl MIME-típusa" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Semmi" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Fájl mérete" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Létezik a tárolóban" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "A fájl elérési útja a tárolóban" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Ellenőrző összeg" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Lapok" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Dokumentum típus" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Tömörítés" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -202,169 +236,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Tömörített fájlnév" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "A tömörített fájl neve, amely a letöltött dokumentumokat tartalmazni fogja, ha az előző opció van kiválasztva." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Oldal tartomány" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Letöltés" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Törölje a grafikus ábrázolásokat, hogy felgyorsítsa a dokumentum megjelenítését és az interaktív átalakításokat." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "" - #: literals.py:14 msgid "Default" msgstr "" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -402,99 +442,97 @@ msgstr "" msgid "Documents types" msgstr "" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Leírás" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "" -#: models.py:169 -msgid "Language" -msgstr "" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Az oldalak száma %(page_num)d nagyobb mint a %(document)s oldalainak száma: %(total_pages)d " -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "Fájlnév" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "Felhasználó" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "" @@ -511,7 +549,7 @@ msgstr "Dokumentum törlése" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Dokumentum letöltése" @@ -569,288 +607,340 @@ msgstr "Dokumentum típus szerkesztése" msgid "View document types" msgstr "Dokumentum típus megtekintése" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "A felhasználónként megjegyzendő dokumentumok maximális száma amit az utóbbi időben (létrehozott, szerkesztett, a megtekintett)." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Egy dokumentum oldal százalékos nagyításának vagy kicsinyítésének aránya egy lépésben." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Egy dokumentum oldal százalékos (%) nagyításának aránya egy lépésben." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Egy dokumentum oldal százalékos (%) kicsinyítésének aránya egy lépésben." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "A felhasználó ennyi fokkal lesz képes elforgatni a dokumentumot oldalt egy lépésben." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "a dokumentumnak nincs több oldala" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Ez már a dokumentum első oldala" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Minden ezután következő verzió is törölve lesz." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Dokumentum verzió sikeresen visszaállt" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Hiba a dokumentum verzió visszaállítása közben; %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:639 -msgid "Empty trash?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Adjon meg legalább egy dokumentumot." +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" msgstr "" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "" -msgstr[1] "" - -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:828 -msgid "Date and time" +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." msgstr "" -#: views.py:964 +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" msgstr[1] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Hiba %(error)s a dokumentum %(document)s oldal átalakítójának törlése közben." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "A dokumentum:% s minden oldal átalakítójának törlése sikeres." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" -msgstr[1] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "a dokumentumnak nincs több oldala" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Ez már a dokumentum első oldala" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -914,9 +1004,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1060,9 +1147,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/id/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/id/LC_MESSAGES/django.mo index c9959a928b..68a0d5b5c1 100644 Binary files a/mayan/apps/documents/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/id/LC_MESSAGES/django.po b/mayan/apps/documents/locale/id/LC_MESSAGES/django.po index 5596ae00b7..55e454cc28 100644 --- a/mayan/apps/documents/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,85 +18,110 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Dokumen" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Komentar" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -130,68 +155,77 @@ msgstr "" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Gambar halaman" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Cara cepat mengganti nama dokumen" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Tanggal ditambahkan" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "Bahasa" + #: forms.py:122 +msgid "Unknown" +msgstr "" + +#: forms.py:130 msgid "File mimetype" msgstr "Jenis mime berkas" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Ukuran berkas" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Ada di penyimpanan" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Halaman-halaman" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Jenis dokumen" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Kompresi" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -202,169 +236,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Nama berkas terkompresi" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "Nama berkas dari berkas terkompresi yang mengandung dokumen-dokumen yang akan diunduh, bila pilihan sebelumnya terpilih." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Jangkauan halaman" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Unduh" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Bersihkan representasi gambar-gambar yang dipergunakan untuk mempercepat menampilkan dokumen dan hasil transformasi interaktif." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "" - #: literals.py:14 msgid "Default" msgstr "" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -402,99 +442,97 @@ msgstr "" msgid "Documents types" msgstr "" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Deskripsi" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "" -#: models.py:169 -msgid "Language" -msgstr "Bahasa" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "File" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Halaman %(page_num)d dari %(total_pages)d untuk %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "namafile" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "Pengguna" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "" @@ -511,7 +549,7 @@ msgstr "Hapus dokumen" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Unduh dokumen" @@ -569,285 +607,337 @@ msgstr "Sunting jenis dokumen" msgid "View document types" msgstr "Lihat jenis-jenis dokumen" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Jumlah maksimal dokumen-dokumen (dibuat, disunting, dilihat) baru-baru ini per pengguna." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Satuan dalam persen untuk memperbesar atau memperkecil tampilan halaman dokumen per interaksi pengguna." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Jumlah maksimal dalam persen (%) yang diperbolehkan bagi pengguna untuk memperbesar tampilan halaman dokumen secara interaktif" -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Jumlah minimal dalam persen (%) yang diperbolehkan bagi pengguna untuk memperkecil tampilan halaman dokumen secara interaktif." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Jumlah dalam derajat untuk memutar halaman dokumen per interaksi pengguna." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "Tidak ada halaman lagi dalam dokumen ini" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Anda telah berada pada halaman pertama dari dokumen ini" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Semua versi sebelum versi yang ini akan ikut dihapus juga." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Versi dokumen berhasil dikembalikan." -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Masalah dalam mengembalikan versi dokumen; %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:639 -msgid "Empty trash?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Harus memberikan setidaknya satu dokumen." +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" msgstr "" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "" - -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:828 -msgid "Date and time" +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." msgstr "" -#: views.py:964 +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Masalah dalam menghapus transformasi-transformasi untuk halaman: %(document)s; %(error)s." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Semua transformasi-transformasi halaman untuk dokumen: %s, telah berhasil dihapus." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "Tidak ada halaman lagi dalam dokumen ini" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Anda telah berada pada halaman pertama dari dokumen ini" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -911,9 +1001,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1056,9 +1143,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/it/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/it/LC_MESSAGES/django.mo index cb45cbbf75..714bf1e602 100644 Binary files a/mayan/apps/documents/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/it/LC_MESSAGES/django.po b/mayan/apps/documents/locale/it/LC_MESSAGES/django.po index c3aaaa3e6e..60c8bbaf28 100644 --- a/mayan/apps/documents/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/it/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-30 21:18+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Marco Camplese \n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" @@ -20,85 +20,110 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Documenti" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "Tipi di documento" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "Documenti nel cestino" + +#: apps.py:145 msgid "Create a document type" msgstr "Creare un tipo di documento" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "Ad ogni documento caricato deve essere assegnato un tipo documento, questa è la via più semplice per categorizzare i documenti in Mayan EDMS." -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "Etichetta" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "Il MIME Type di qualsiasi delle versioni del documento" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "Tipo MIME" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "Miniatura" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "Tipo" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "Abilitato" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "Data e ora di spostamento nel cestino" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "Ora e data" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "Codifica" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Commento" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "Nuovi documenti per mese" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "Nuove versioni dei documenti per mese" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "Nuove pagine di documento per mese" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "Totale documenti per ogni mese" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "Totale versioni di documento documento per ogni mese" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "Totale pagine documento per ogni mese" @@ -132,68 +157,77 @@ msgstr "Versioni di documento recuperate" msgid "Document viewed" msgstr "Documenti visualizzati" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Immagine della pagina" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "Pagine del documento (%d)" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Rinomina del documento veloce" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Data inserimento" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "Lingua" + #: forms.py:122 +msgid "Unknown" +msgstr "Sconosciuto" + +#: forms.py:130 msgid "File mimetype" msgstr "File mimetype" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Nessuna " -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "File encoding" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Dimensioni del file" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Esiste nello storage" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "File path in storage" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Checksum" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Pagine" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Tipo documento " -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Comprimere" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -204,169 +238,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "Scarica il documento nel formato originale oppure compresso. Questa opzione è selezionabile quando scarichi un singolo documento, per documenti multipli, il pacchetto sarà sempre scaricato in formato compresso." -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Nome file compresso " -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "Il nome file del file compresso che conterrà il documento da scaricare, se l'opzione precedente è selezionata." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Intervallo pagina" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "Anteprima " -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "Proprietà" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "Versioni" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "Cancella trasformazioni" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "Cancella" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "Sposta nel cestino" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "Modifica proprietà" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "Cambia tipo" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Scarica" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "Stampa" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "Ricalcola numero pagine" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "Ripristina" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "Scarica versione" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "Tutti i documenti" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "Documenti recenti" -#: links.py:144 -msgid "Trash" -msgstr "Cestino" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" +msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Cancella le rappresentazioni grafiche utilizzate per accellerare la visualizzazione dei documenti e dei risultati interattivi trasformazioni." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "Pulisci la cache delle immagini dei documenti" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "Svuota cestino" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "Prima pagina" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "Ultima pagina" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "Pagina precedente" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "Pagina successiva" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "Documento" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "Ruota a sinistra" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "Ruota a destra" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "Reset visualizzazione" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "Zoom in" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "Zoom out" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "Ritornare" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "Crea tipo di documento" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "Modifica" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "Aggiungi un'etichetta rapida al tipo documento" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "Etichette rapide" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "Tipi di documento" - #: literals.py:14 msgid "Default" msgstr "Default" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "Tutte le pagine" @@ -404,99 +444,97 @@ msgstr "Unità di tempo per cancellare" msgid "Documents types" msgstr "Tipi di documenti" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "Il nome del documento" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Descrizione " -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "Aggiunto" -#: models.py:169 -msgid "Language" -msgstr "Lingua" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "Nel cestino?" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "Data e ora di spostamento nel cestino" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "Un documento troncato è un documento presente sul database che non ha un file scaricato. Potrebbe essere dovuto ad un upload interrotto oppure rimandato per caricarlo via API." -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "Documento troncato?" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "Documento troncato, ID: %d" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "Timestamp" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "File" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "Versione documento" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "Etichetta rapida" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "Numero di pagina" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Pagina %(page_num)d di %(total_pages)d del %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "Pagina del documento" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "Le pagine del documento" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" -msgstr "Nuovo blocco versione" +#: models.py:801 +msgid "Filename" +msgstr "Nome file" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" -msgstr "Nuovi blocchi versione" +#: models.py:804 +msgid "Document page cached image" +msgstr "" -#: models.py:794 +#: models.py:805 +msgid "Document page cached images" +msgstr "" + +#: models.py:827 msgid "User" msgstr "Utente" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "Acceduto" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "Documento recente " @@ -513,7 +551,7 @@ msgstr "Cancella documenti" msgid "Trash documents" msgstr "Cestina documenti" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Scarica documenti" @@ -571,288 +609,340 @@ msgstr "Modifica il tipo di documento" msgid "View document types" msgstr "Visualizza i tipi di documento" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Numero massimo di documenti recenti da ricordare per utente (creazione, modifica, visualizzazione)." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Percentuale dello zoom di una pagina del documento per l'interazione dell'utente." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Ingrandimento massimo in percentuale (%) da consentire all'utente per una pagina del documento in modo interattivo." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Quantità minima in percentuale (%) per consentire all'utente di ingrandire una pagina di documento in modo interattivo." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Quantità di gradi per la rotazione della pagina del documento" -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "Lingua predefinita per idocumenti (in formato ISO639-2)." -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "Elenco delle lingue supportate nei documenti." -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "Cancellare la cache delle immagini documento?" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "Pulizia della cache documenti in coda completata con successo." - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "Documenti nel cestino" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "Cancellare il documento selezionato?" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "Documento: %(document)s cancellato." - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "Cancellare i documenti selezionati?" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "Modifica le proprietà del documento: %s" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "Ripristinare i documenti selezionati?" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "Documento: %(document)s rispristinato." - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "Ripristinare i documenti selezionati?" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "Pagine del documento: %s" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "Non ci sono più pagine in questo documento" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Sei già alla prima pagina del documento" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "Immagine di: %s" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "Anteprima del documento: %s" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "Spostare \"%s\" nel cestino?" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "Documento: %(document)s spostato nel cestino con successo.." - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "Spostare i documenti selezionati nel cestino?" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "Documento di tipo: %s" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "Tutti i documenti di questo tipo saranno cancellati ." -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "Cancellare il tipo documento: %s?" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "Modifica il tipo di documento: %s" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "Crea etichetta rapida per il tipo documento: %s" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "Modifica etichetta rapida \"%(filename)s\" dal tipo documento \"%(document_type)s\"" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "Cancellare l'etichetta: %(label)s, dal tipo documento \"%(document_type)s\"?" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "Etichette rapide per il tipo documento: %s" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "Versione del documento: %s" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Tutte le versioni precedenti a questa verranno cancellate." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "Ripristinare questa versione?" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Versione del documento ripristinato con successo" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Errore restituito, al ripristino del documento; %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "Cancellare il documento selezionato?" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" -msgstr "Proprietà del documento: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." +msgstr "Documento: %(document)s cancellato." -#: views.py:639 -msgid "Empty trash?" -msgstr "Cancellare il cestino?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" +msgstr "Cancellare i documenti selezionati?" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" -msgstr "Svuotamento cestino completato" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" +msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Fornire almeno un documento " +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "Tipo documento per \"%s\" cambiato con successo." -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "Invia" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" +msgstr "Modifica le proprietà del documento: %s" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "Cambia il tipo del documento selezionato." -msgstr[1] "Cambia il tipo dei documenti selezionati." +#: views/document_views.py:200 +msgid "Restore the selected document?" +msgstr "Ripristinare i documenti selezionati?" -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." -msgstr "Deve fornire almeno un documento o una versione." +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." +msgstr "Documento: %(document)s rispristinato." -#: views.py:819 -msgid "Documents to be downloaded" -msgstr "Documenti da scaricare" +#: views/document_views.py:229 +msgid "Restore the selected documents?" +msgstr "Ripristinare i documenti selezionati?" -#: views.py:828 -msgid "Date and time" -msgstr "Data e ora" +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" +msgstr "Anteprima del documento: %s" -#: views.py:931 -msgid "At least one document must be selected." -msgstr "Almeno un documento deve essere selezionato." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" +msgstr "Spostare \"%s\" nel cestino?" -#: views.py:954 -msgid "Document queued for page count recalculation." -msgstr "Documento messo in coda per ricalcolo delle pagine." +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "Documento: %(document)s spostato nel cestino con successo.." -#: views.py:955 -msgid "Documents queued for page count recalculation." -msgstr "Documenti messi in coda per ricalcolo delle pagine." +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "Spostare i documenti selezionati nel cestino?" -#: views.py:964 +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "Proprietà del documento: %s" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "Cancellare il cestino?" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "Svuotamento cestino completato" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "Ricalcolare il conteggio delle pagine del documento selezionato?" msgstr[1] "Ricalcolare il conteggio delle pagine dei documenti selezionati?" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Errore nella cancellazione della trasformazione della pagina per il documento:%(document)s; %(error)s." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "Invia" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Tutte le trasformazioni alle pagine del documento:%s, sono state cancellate con successo." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "Cancellare le trasformazioni per il documento selezionato?" -msgstr[1] "Cancellare le trasformazioni per i documenti selezionati?" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "Non ci sono più pagine in questo documento" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Sei già alla prima pagina del documento" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "Stampa: %s" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "Cancellare la cache delle immagini documento?" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "Pulizia della cache documenti in coda completata con successo." + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "Pagina %(page_number)d di %(total_pages)d" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "Immagine pagina documento" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -916,9 +1006,6 @@ msgstr "Immagine pagina documento" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1062,9 +1149,6 @@ msgstr "Immagine pagina documento" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/nl_NL/LC_MESSAGES/django.mo index 5b18c65369..86f1461456 100644 Binary files a/mayan/apps/documents/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/documents/locale/nl_NL/LC_MESSAGES/django.po index 1745966c75..d5abafe7e4 100644 --- a/mayan/apps/documents/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/nl_NL/LC_MESSAGES/django.po @@ -5,13 +5,14 @@ # Translators: # Translators: # Evelijn Saaltink , 2016 +# Johan Braeken, 2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-11-09 15:56+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Johan Braeken\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,85 +20,110 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Documenten" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "Documentsoorten" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "Een documentsoort aanmaken" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "Label" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "MIME type" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "Thumbnail" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "Type" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "Ingeschakeld" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "Tijd en datum" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Commentaar" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "Nieuwe documenten per maand" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "Nieuwe documentversies per maand" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "Nieuwe documentpagina's per maand" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -129,70 +155,79 @@ msgstr "Documentversie teruggedraaid" #: events.py:29 msgid "Document viewed" -msgstr "" +msgstr "Document bekeken" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Pagina afbeelding" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "Documentpagina's (%d)" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Snel document hernoemen" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Datum toegevoegd" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "Taal" + #: forms.py:122 +msgid "Unknown" +msgstr "Onbekent" + +#: forms.py:130 msgid "File mimetype" msgstr "MIME-type bestand" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Geen" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "Bestand encoderen" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Bestandgrootte" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Aanwezig in opslag" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Bestandspad in opslag" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Checksum" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Pagina's" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Documentsoort" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Comprimeren" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -203,171 +238,177 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Bestandsnaam gecomprimeerde archiefbestand" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "De bestandsnaam van het gecomprimeerde archiefbestand dat alle documenten bevat die dienen te worden gedownload, als de voorgaande optie is geselecteerd." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Pagina bereik" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "Preview" -#: links.py:48 +#: links.py:50 msgid "Properties" -msgstr "Eigenschappe" +msgstr "Eigenschappen" -#: links.py:53 +#: links.py:55 msgid "Versions" -msgstr "" +msgstr "Versies" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "Verwijder" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" -msgstr "" +msgstr "Verplaats naar trash" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "Bewerk eigenschappen" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "Verander soort" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Download" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "Printe" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" -msgstr "" +msgstr "Aantal bladzijden herberekenen" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "Alle documenten" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "Recente documenten" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Opschonen van de grafische afbeeldingen, die gebuikt worden bij het versnellen van de documentweergave en interactive transformatie resultaten." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" -msgstr "" - -#: links.py:172 -msgid "Last page" -msgstr "" +msgstr "Eerste bladzijde" #: links.py:179 +msgid "Last page" +msgstr "Laatste bladzijde" + +#: links.py:186 msgid "Previous page" -msgstr "" +msgstr "Vorige bladzijde" -#: links.py:185 +#: links.py:192 msgid "Next page" -msgstr "" +msgstr "Volgende bladzijde" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "Document" -#: links.py:196 +#: links.py:203 msgid "Rotate left" -msgstr "" +msgstr "Daai linksom" -#: links.py:201 +#: links.py:208 msgid "Rotate right" -msgstr "" +msgstr "Draai rechtsom" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "" -#: links.py:214 +#: links.py:221 msgid "Zoom in" -msgstr "" - -#: links.py:219 -msgid "Zoom out" -msgstr "" +msgstr "Inzoomen" #: links.py:227 +msgid "Zoom out" +msgstr "Uitzoomen" + +#: links.py:236 msgid "Revert" msgstr "" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "bewerken" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "Documentsoorten" - #: literals.py:14 msgid "Default" msgstr "Verstekwaarde" -#: literals.py:24 +#: literals.py:23 msgid "All pages" -msgstr "" +msgstr "Alle bladzijden" #: models.py:69 msgid "" @@ -401,101 +442,99 @@ msgstr "" #: models.py:106 msgid "Documents types" -msgstr "" +msgstr "Documenttypes" -#: models.py:158 +#: models.py:153 msgid "The name of the document" -msgstr "" +msgstr "De naam van het document" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Omschrijving" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "Toegevoegd" -#: models.py:169 -msgid "Language" -msgstr "Taal" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "Timestamp" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "Bestand" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "Documentversie" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" -msgstr "" +msgstr "Paginanummer" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Pagina %(page_num)d van %(total_pages)d in %(document)s " -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "Documentpagina" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "Bestandsnaam" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "Gebruiker" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "" @@ -512,7 +551,7 @@ msgstr "Documenten verwijderen" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Documenten downloaden" @@ -531,7 +570,7 @@ msgstr "Documenteigenschappen bewerken" #: permissions.py:31 #| msgid "Edit documents" msgid "Print documents" -msgstr "" +msgstr "Druk documenten af" #: permissions.py:34 #| msgid "Delete documents" @@ -570,288 +609,340 @@ msgstr "Documentsoorten bewerken" msgid "View document types" msgstr "Bekijk de documentsoorten" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Maximum aantal recente docmenten (aangemaakt, bewerkt, bekeken), te onthouden per gebruiker." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Percentage in- of uitzoomen voor documentpagina per gebruikeractie." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Maximaal toegestane documentpagina zoom percentage (%) per gebruikeractie." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Minimaal toegestane documentpagina zoom percentage (%) per gebruikeractie. " -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Aantal graden documentpagina rotatie per gebruikeractie." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "Er zijn verder geen pagina's meer in dit document" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "U bent al op de eerste pagina in dit document" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "Alle documenten van dit type zullen ook worden verwijderd." -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "Bewerk documenttype: %s" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "Versies van document: %s" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Alle recentere versies na deze zullen ook worden verwijderd." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" -msgstr "" +msgstr "Deze versie terugzetten?" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Documentversie succesvol teruggevoerd" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Fout bij het terugvoeren van de documentversie. Foutmelding: %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "Het geselecteerde document verwijderen?" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" -msgstr "Eigenschappen voor document: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." +msgstr "" -#: views.py:639 -msgid "Empty trash?" -msgstr "Prullenbak legen?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" +msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" -msgstr "Prullenbak succesvol geleegd" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" +msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "U dient minstens 1 document aan te geven." +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "Documenttype voor \"%s\" succesvol veranderd." -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "Verstuur" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" +msgstr "Bewerk eigenschappen van document: %s" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "Verander het type van het geselecteerde document." -msgstr[1] "Verander het type van de geselecteerde documenten." +#: views/document_views.py:200 +msgid "Restore the selected document?" +msgstr "Het geselecteerde document terugzetten?" -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" -msgstr "Documenten om te downloaden" +#: views/document_views.py:229 +msgid "Restore the selected documents?" +msgstr "De geselecteerde documenten terugzetten?" -#: views.py:828 -msgid "Date and time" -msgstr "Datum en tijd" - -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." msgstr "" -#: views.py:964 +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "Eigenschappen voor document: %s" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "Prullenbak legen?" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "Prullenbak succesvol geleegd" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" msgstr[1] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Fout bij verwijderen van de pagina transformaties voor document: %(document)s ; %(error)s ." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "Verstuur" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Alle paginatransformaties voor document: %s, zijn succesvol verwijderd." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" -msgstr[1] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "Er zijn verder geen pagina's meer in dit document" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "U bent al op de eerste pagina in dit document" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "Afdrukken: %s" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "Pagina %(page_number)d van %(total_pages)d" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -915,9 +1006,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1061,9 +1149,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/pl/LC_MESSAGES/django.mo index e0db89c20e..1d534ba3ee 100644 Binary files a/mayan/apps/documents/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/pl/LC_MESSAGES/django.po b/mayan/apps/documents/locale/pl/LC_MESSAGES/django.po index 049202eff3..ec681740b4 100644 --- a/mayan/apps/documents/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/pl/LC_MESSAGES/django.po @@ -10,95 +10,120 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Dokumenty" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "Typy dokumentów" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "Utwórz typ dokumentu" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "Każdy przesłany dokument musi mieć przypisany typ dokumentu, ponieważ jest to podstawowy sposób kategoryzacji dokumentów w Mayan EDMS." -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "Etykieta" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "Typ MIME każdej wersji dokumentu" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "Typ MIME" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "Miniaturka" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "Typ" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "Włączone" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "Data i czas umieszczenia w koszu" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "Czas i data" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "Kodowanie" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Komentarz" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "Nowe dokumenty miesięcznie" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "Nowe wersje dokumentów miesięcznie" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "Nowe strony dokumentów miesięcznie" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "Liczba dokumentów w każdym miesiącu" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "Liczba wersji dokumentów w każdym miesiącu" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "Liczba stron dokumentów w każdym miesiącu" @@ -132,68 +157,77 @@ msgstr "Wersja dokumentu została przywrócona" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Obraz strony" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "Strony dokumentu (%d)" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Szybka zmiana nazwy dokumentu" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Data dodania" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "Język" + #: forms.py:122 +msgid "Unknown" +msgstr "Nieznany" + +#: forms.py:130 msgid "File mimetype" msgstr "Typ MIME pliku" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Brak" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "Kodowanie pliku" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Rozmiar pliku" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Istnieje w systemie" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Ścieżka pliku w systemie" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Suma kontrolna" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Strony" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Typ dokumentów" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Kompresuj" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -204,169 +238,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "Pobierz dokument w formacie oryginalnym lub w formie skompresowanej. Powyższa opcja ma zastosowanie jedynie w przypadku pobierania pojedynczego pliku. W przypadku wielu dokumentów zostaną one pobrane w formie skompresowanego archiwum." -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Nazwa pliku skompresowanego" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "Nazwa pliku zawierającego gotowe do pobrania dokumenty w formie skompresowanej, jeśli poprzednio wybrano opcję kompresji." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Zakres stron" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "Podgląd" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "Właściwości" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "Wersje" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "Wyczyść transformacje" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "Usuń" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "Przenieś do kosza" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "Edytuj właściwości" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "Zmień typ" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Pobierz" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "Drukuj" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "Przelicz liczbę stron" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "Wszystkie dokumenty" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "Ostatnio przeglądane" -#: links.py:144 -msgid "Trash" -msgstr "Kosz" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" +msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "" -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "Pierwsza strona" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "Ostatnia strona" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "Poprzednia strona" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "Następna strona" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "Dokument" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "Obrót w lewo" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "Obrót w prawo" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "Resetuj widok" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "Powiększ" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "Pomniejszyć" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "Przywróć" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "Tworzenie typów dokumentów" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "Edytuj" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "Typy dokumentów" - #: literals.py:14 msgid "Default" msgstr "Domyślne" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "Wszystkie strony" @@ -404,99 +444,97 @@ msgstr "" msgid "Documents types" msgstr "Typy dokumentów" -#: models.py:158 +#: models.py:153 msgid "The name of the document" -msgstr "" +msgstr "Nazwa dokumentu" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Opis" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "Dodano" -#: models.py:169 -msgid "Language" -msgstr "Język" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "Pieczęć czasu" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "Plik" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "Wersja dokumentu" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "Numer strony" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Strona %(page_num)d z %(total_pages)d stron dokumentu %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "Strona dokumentu" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "Strony dokumentu" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "Nazwa" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "Użytkownik" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "Dostępne" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "Ostatni dokument" @@ -513,7 +551,7 @@ msgstr "Usuwanie dokumentów" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Pobieranie dokumentów" @@ -571,291 +609,346 @@ msgstr "Edytuj typy dokumentów" msgid "View document types" msgstr "Zobacz typy dokumentów" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "" -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "" -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "" -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "" -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "" -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "Strony dokumentu: %s" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Jesteś już na pierwszej stronie tego dokumentu" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "Podgląd dokumentu: %s" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "Wersje dokumentu: %s" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "" -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" -msgstr "Właściwości dokumentu: %s" - -#: views.py:639 -msgid "Empty trash?" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Musisz dodać co najmniej jeden dokument." +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" +msgstr "" -#: views.py:704 +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" + +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "Wykonaj" - -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:828 -msgid "Date and time" -msgstr "Data i godzina" - -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" +msgstr "Podgląd dokumentu: %s" + +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" msgstr "" -#: views.py:964 +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "" + +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "Właściwości dokumentu: %s" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "" -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "Wykonaj" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." +msgid "Clone page transformations for document: %s" msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Jesteś już na pierwszej stronie tego dokumentu" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "Wydruk: %s" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "Strona %(page_number)d of %(total_pages)d" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -919,9 +1012,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1019,6 +1109,7 @@ msgstr "" #~ msgstr[0] "ee02f3189246f97d6734a407f6f9040b_pl_0" #~ msgstr[1] "ee02f3189246f97d6734a407f6f9040b_pl_1" #~ msgstr[2] "ee02f3189246f97d6734a407f6f9040b_pl_2" +#~ msgstr[3] "ee02f3189246f97d6734a407f6f9040b_pl_3" #~ msgid "Document page edited successfully." #~ msgstr "Document page edited successfully." @@ -1066,9 +1157,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/pt/LC_MESSAGES/django.mo index 11695cce6b..9cfdaf43e2 100644 Binary files a/mayan/apps/documents/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/pt/LC_MESSAGES/django.po b/mayan/apps/documents/locale/pt/LC_MESSAGES/django.po index 669b1ffc55..3374da2fad 100644 --- a/mayan/apps/documents/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/pt/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -18,85 +18,110 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Documentos" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "Nome" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "Tipo MIME" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Comentário" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -130,68 +155,77 @@ msgstr "" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Imagem da página" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Renomeação rápida de documento" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Data de adição" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "" + #: forms.py:122 +msgid "Unknown" +msgstr "" + +#: forms.py:130 msgid "File mimetype" msgstr "Tipo MIME do ficheiro" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Nenhum" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Tamanho do ficheiro" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Existe no armazenamento" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Caminho do ficheiro no armazenamento" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Soma de verificação" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Páginas" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Tipo de documento" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Comprimir" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -202,169 +236,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "" -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Intervalo de páginas" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "Eliminar" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Descarregar" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Limpar as representações gráficas usadas para acelerar a exibição e transformações interativas de documentos." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "Editar" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "" - #: literals.py:14 msgid "Default" msgstr "Padrão" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -402,99 +442,97 @@ msgstr "" msgid "Documents types" msgstr "" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Descrição" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "" -#: models.py:169 -msgid "Language" -msgstr "" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "Ficheiro" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Página %(page_num)d de %(total_pages)d de %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "Nome do ficheiro" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "Utilizador" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "" @@ -511,7 +549,7 @@ msgstr "Excluir documentos" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Descarregar documentos" @@ -569,288 +607,340 @@ msgstr "Editar tipos de documentos" msgid "View document types" msgstr "Ver tipos de documento" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Número máximo de documentos recentes (criados, editados, visualizados) a recordar, por utilizador." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Percentagem de zoom in/out por interação do utilizador." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Percentagem (%) máxima para o utilizador aumentar o zoom de uma página de documento de forma interativa." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Percentagem (%) mínima para o utilizador diminuir o zoom de uma página de documento de forma interativa." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Valor em graus para rodar uma página de documento por interação do utilizador." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "Não há mais páginas neste documento" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Já está na primeira página deste documento" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Todas as versões posteriores a esta também serão eliminadas." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Versão do documento revertida com sucesso" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Erro ao reverter versão do documento; %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:639 -msgid "Empty trash?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Deve fornecer pelo menos um documento." +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "Submeter" - -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "" -msgstr[1] "" - -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:828 -msgid "Date and time" +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" msgstr "" -#: views.py:964 +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "" + +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" msgstr[1] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Erro ao excluir as transformações de página para o documento: %(document)s; %(error)s ." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "Submeter" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Todas as transformações de página para o documento: %s, foram excluídas com sucesso." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" -msgstr[1] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "Não há mais páginas neste documento" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Já está na primeira página deste documento" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -914,9 +1004,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1060,9 +1147,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/pt_BR/LC_MESSAGES/django.mo index cf5d0e3cdd..3923e0776d 100644 Binary files a/mayan/apps/documents/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/documents/locale/pt_BR/LC_MESSAGES/django.po index 6ff0313c62..e0ae529610 100644 --- a/mayan/apps/documents/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/pt_BR/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-11-17 23:07+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,85 +19,110 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Documento" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "Tipos de Documentos" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "Documentos na lixeira" + +#: apps.py:145 msgid "Create a document type" msgstr "Criar tipo de documento" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "Cada documento carregado deve ser atribuído um tipo de documento, é a forma básica que o Mayan EDMS categoriza os documentos." -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "Label" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "O tipo MIME de qualquer uma das versões de um documento" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "Tipo MIME" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" -msgstr "miniatura" +msgstr "Miniatura" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "Tipo" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" -msgstr "habilitado" +msgstr "Habilitado" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "Data e hora do envio para a lixeira" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "Hora e Data" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "Codificação" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Comentário" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "Novos documentos por mês" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "Novas versões de documentos por mês" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "Novas páginas de documentos por mês" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "Total de documentos por mês" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "Total de versões de documentos por mês" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "Total de páginas de documentos por mês" @@ -131,68 +156,77 @@ msgstr "Versão de documento revertida" msgid "Document viewed" msgstr "Documento visualizado" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Imagem da página" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "As páginas do documento (%d)" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Renomear documento rápido" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Data de adição" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "Linguagem" + #: forms.py:122 +msgid "Unknown" +msgstr "desconhecido" + +#: forms.py:130 msgid "File mimetype" msgstr "Mimetype do arquivo" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Nenhum" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" -msgstr "codificação de arquivo" +msgstr "Codificação de arquivo" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Tamanho do arquivo" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Existe no armazenamento" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Caminho do arquivo no armazenamento" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Verificação" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Páginas" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Tipo de Documento" -#: forms.py:190 +#: forms.py:195 msgid "Compress" -msgstr "comprimir" +msgstr "Comprimir" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -203,169 +237,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "Faça o download do documento no formato original ou de forma comprimida. Esta opção só pode ser selecionada quando o download de um documento, para vários documentos. O pacote sempre será baixado como um arquivo compactado." -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Comprimido o filename " -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "O nome do arquivo do arquivo compactado que vai conter os documentos a serem baixados, se a opção anterior é selecionado." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Intervalo de páginas" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "Visualizar" -#: links.py:48 +#: links.py:50 msgid "Properties" -msgstr "propriedades" +msgstr "Propriedades" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "Versão" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" -msgstr "remover transformações" +msgstr "Remover transformações" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "Excluir" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "Mover para a lixeira" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "Editar propriedades" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "Mudar o tipo" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Baixar" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "Imprimir" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "Recalcular a contagem de páginas" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "Restaurar" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "Baixar a versão" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "Todos os Documentos" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "Documentos recentes" -#: links.py:144 -msgid "Trash" -msgstr "Lixeira" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" +msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Desmarque as representações gráficas utilizadas para acelerar a exibição e transformações interativas resultados dos documentos." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "Apagar o cache de imagens de documentos" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "Esvaziar a lixeira" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "Primeira página" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "Última pagina" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "Página anterior" -#: links.py:185 +#: links.py:192 msgid "Next page" -msgstr "próxima pagina" +msgstr "Próxima pagina" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "Documento" -#: links.py:196 +#: links.py:203 msgid "Rotate left" -msgstr "girar para a esquerda" +msgstr "Girar para a esquerda" -#: links.py:201 +#: links.py:208 msgid "Rotate right" -msgstr "girar para a direita" +msgstr "Girar para a direita" -#: links.py:209 +#: links.py:216 msgid "Reset view" -msgstr "redefinir visão" +msgstr "Redefinir visão" -#: links.py:214 +#: links.py:221 msgid "Zoom in" -msgstr "mais zoom" - -#: links.py:219 -msgid "Zoom out" -msgstr "menos zoom" +msgstr "Mais zoom" #: links.py:227 -msgid "Revert" -msgstr "reverter" +msgid "Zoom out" +msgstr "Menos zoom" -#: links.py:234 views.py:419 +#: links.py:236 +msgid "Revert" +msgstr "Reverter" + +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "Criar Tipo de documento" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "Editar" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "Adicionar etiqueta rápida ao tipo de documento" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "Etiquetas rápidas" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "Tipos de Documentos" - #: literals.py:14 msgid "Default" msgstr "Padrão" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "Todas as páginas" @@ -403,99 +443,97 @@ msgstr "Unidade de tempo de eliminação" msgid "Documents types" msgstr "Tipos de Documentos" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "O nome do documento" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Descrição" -#: models.py:164 +#: models.py:159 msgid "Added" -msgstr "adicionado" +msgstr "Adicionado" -#: models.py:169 -msgid "Language" -msgstr "Lingua" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "Na lixeira?" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "Data e hora de envio à lixeira" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "Um rascunho de documento é um documento com uma entrada no banco de dados, mas nenhum arquivo carregado. Isso pode ser um envio interrompido ou um envio diferido por meio da API." -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "É um rascunho?" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "Documento rascunho, id: %d" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "Timestamp" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "Arquivo" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "Versão do Documento" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "Etiqueta rápida" -#: models.py:651 +#: models.py:643 msgid "Page number" -msgstr "página número" +msgstr "Página número" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Pagina %(page_num)d de %(total_pages)d em %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" -msgstr "página do documento" +msgstr "Página do documento" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" -msgstr "páginas do documento" +msgstr "Páginas do documento" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" -msgstr "Bloqueio de nova versão" +#: models.py:801 +msgid "Filename" +msgstr "Nome do arquivo" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" -msgstr "Bloqueios de nova versão" +#: models.py:804 +msgid "Document page cached image" +msgstr "" -#: models.py:794 +#: models.py:805 +msgid "Document page cached images" +msgstr "" + +#: models.py:827 msgid "User" msgstr "Usuário" -#: models.py:800 +#: models.py:833 msgid "Accessed" -msgstr "acessado" +msgstr "Acessado" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "Documentos recentes" @@ -512,7 +550,7 @@ msgstr "Excluir documentos" msgid "Trash documents" msgstr "Mover documentos para a lixeira" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Baixar documentos" @@ -570,288 +608,340 @@ msgstr "Editar tipos de documentos" msgid "View document types" msgstr "Ver tipos de documentos" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Número máximo de documentos recentes (criado, editado, visualizado) à ser lembrado, por usuário." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Quantidade em porcentagem de zoom em uma página ou documento por interação do usuário." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Valor máximo em porcentagem (%) para permitir ao usuário aumentar o zoom em uma página do documento de forma interativa." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Valor mínimo em porcentagem (%) para permitir ao usuário diminuir o zoom em uma página do documento de forma interativa." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Valor em graus para girar uma página do documento por interação do usuário." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "Os documentos padrão linguagem (em formato ISO639-2)." -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "Lista de idiomas de documentos suportados." -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "Apagar do cache a imagem do documento?" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "Cache do documento apagado com sucesso." - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "Documentos na lixeira" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "Remover o documento selecionado?" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "Documento: %(document)s removido." - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "Remover os documentos selecionados?" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "Editar propriedades de documento: %s" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "Restaurar os documentos selecionados?" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "Documentq: %(document)s restaurado." - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "Restaurar os documentos selecionados?" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "Páginas por documento: %s" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "Não há mais páginas neste documento" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Você já está na primeira página deste documento" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "Imagem de: %s" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "Pré-visualização do documento:%s " - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "Mover \"%s\" para a lixeira?" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "Documento: %(document)s movido para a lixeira com sucesso." - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "Mover os documentos selecionados para a lixeira?" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "Documentos do tipo: %s" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "Todos os documentos deste tipo serão excluídos também." -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "Remove o documento do tipo: %s?" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "Editar o tipo de documento: %s" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "Criar uma etiqueta rápida para o documento tipo: %s" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "Editar etiqueta rápida \"%(filename)s\" para documento do tipo \"%(document_type)s\"" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "Apagar a etiqueta rápida: %(label)s, do documento tipo \"%(document_type)s\"?" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "Etiquetas rápidas para documento do tipo: %s" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "Versões do documento: %s" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Tudo versão posterior após este será excluído também." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "Reverter para esta versão?" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Versão do documento revertidos com sucesso" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Erro ao reverter versão do documento; %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "Remover o documento selecionado?" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" -msgstr "Pré-visualização do documento:%s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." +msgstr "Documento: %(document)s removido." -#: views.py:639 -msgid "Empty trash?" -msgstr "Esvaziar a lixeira?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" +msgstr "Remover os documentos selecionados?" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" -msgstr "Lixeira esvaziada com sucesso" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" +msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Deve fornecer, pelo menos, um documento." +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "Tipo de documento para \"%s\" alterado com sucesso." -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "Submeter" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" +msgstr "Editar propriedades de documento: %s" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "Alterar o tipo do documento selecionado." -msgstr[1] "Alterar o tipo dos documentos selecionados." +#: views/document_views.py:200 +msgid "Restore the selected document?" +msgstr "Restaurar os documentos selecionados?" -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." -msgstr "Deve fornecer ao menos um documento ou versão." +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." +msgstr "Documentq: %(document)s restaurado." -#: views.py:819 -msgid "Documents to be downloaded" -msgstr "Documentos a serem baixados" +#: views/document_views.py:229 +msgid "Restore the selected documents?" +msgstr "Restaurar os documentos selecionados?" -#: views.py:828 -msgid "Date and time" -msgstr "data e hora" +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" +msgstr "Pré-visualização do documento:%s " -#: views.py:931 -msgid "At least one document must be selected." -msgstr "Ao menos um documento precisa ser selecionado." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" +msgstr "Mover \"%s\" para a lixeira?" -#: views.py:954 -msgid "Document queued for page count recalculation." -msgstr "Documento em fila para recalcular quantidade de páginas." +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "Documento: %(document)s movido para a lixeira com sucesso." -#: views.py:955 -msgid "Documents queued for page count recalculation." -msgstr "Documentos em fila para recalcular contagem de páginas." +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "Mover os documentos selecionados para a lixeira?" -#: views.py:964 +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "Pré-visualização do documento:%s" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "Esvaziar a lixeira?" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "Lixeira esvaziada com sucesso" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "Recalcular a contagem de páginas do documento selecionado?" msgstr[1] "Recalcular a contagem de páginas dos documentos selecionados?" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Erro ao excluir as transformações de página para o documento: %(document)s; %(error)s ." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "Submeter" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Todas as transformações de página para o documento: %s, foram excluídas com sucesso." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "Limpar todas as transformações de páginas para o documento selecionado?" -msgstr[1] "Limpar todas as transformações de páginas para os documentos selecionados?" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "Não há mais páginas neste documento" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Você já está na primeira página deste documento" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "Imprimir: %s" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "Apagar do cache a imagem do documento?" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "Cache do documento apagado com sucesso." + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "Página %(page_number)d de %(total_pages)d" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "Imagem da página do documento" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -915,9 +1005,6 @@ msgstr "Imagem da página do documento" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1061,9 +1148,6 @@ msgstr "Imagem da página do documento" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/ro_RO/LC_MESSAGES/django.mo index b865e5a243..f7b894e05a 100644 Binary files a/mayan/apps/documents/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/documents/locale/ro_RO/LC_MESSAGES/django.po index 875a5d31c3..18d522bf0c 100644 --- a/mayan/apps/documents/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/ro_RO/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -19,85 +19,110 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Documente" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "Etichetă" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "Tip MIME" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "Iconiță" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "Tip" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "Encodare" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Comentariu" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -131,68 +156,77 @@ msgstr "" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Imaginea paginii" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Redenumire rapidă" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Dată adaugată" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "" + #: forms.py:122 +msgid "Unknown" +msgstr "Necunoscut" + +#: forms.py:130 msgid "File mimetype" msgstr "Tip fişier " -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Nici unul" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Marime fişier" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Există în arhivă" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Cale fisier in arhiva" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Suma de control" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Pagini" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Tip document" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Comprimă" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -203,169 +237,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Nume fişier comprimat" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "Nume fișier comprimat, care va conține documentele ce urmează să fie descărcate, în cazul în care această opțiunea a fost selectată anterior." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Pagini" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "Șterge" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Descarcă" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Goliți reprezentările grafice folosite pentru a accelera afișarea documentelor și rezultatele interactive de transformari." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "Editează" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "" - #: literals.py:14 msgid "Default" msgstr "Iniţial" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -403,99 +443,97 @@ msgstr "" msgid "Documents types" msgstr "" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Descriere" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "" -#: models.py:169 -msgid "Language" -msgstr "" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "Fișier" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "Versiune document" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "Numarul paginii" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Pag %(page_num)d din %(total_pages)d din %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "Pagini document" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "Nume fişier" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "utilizator" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "Accesat" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "" @@ -512,7 +550,7 @@ msgstr "Şterge" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Descarcă" @@ -570,291 +608,343 @@ msgstr "Editează tipuri" msgid "View document types" msgstr "Vezi tipuri de documente" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Numărul maxim de documente (create, editate, vizualizate) reţinute per utilizator." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Suma în procente folosită pentru a mării sau micşora un document interactiv cu utilizatorul." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Suma maximă în procente (%), permisă utilizatorilor pentru mărirea interactiv a unei pagini ." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Suma minimă în procente (%), permisă utilizatorului pentru micșorarea interactivă a unei pagini ." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Ce rotaţie pentru pagină (în grade) este folosită în interacțiunea cu utilizatorul." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "Nu mai sunt pagini în acest document." + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Sunteți deja la prima pagină a acestui document" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Toate versiune de dupa aceasta, vor fi şterse de asemenea." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Versiunea documentului refacută cu succes" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Eroare la revenirea la versiunea documentului; %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:639 -msgid "Empty trash?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" -msgstr "" - -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Trebuie selectat cel puțin un document." - -#: views.py:704 +#: views/document_views.py:120 #, python-format -msgid "Document type for \"%s\" changed successfully." +msgid "Document type change request performed on %(count)d document" msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "Trimiteţi" +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" +#: views/document_views.py:164 +#, python-format +msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:828 -msgid "Date and time" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" msgstr "" -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:964 +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" +msgstr "" + +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" +msgstr "" + +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "" + +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Eroare la ștergerea transformări : %(document)s; %(error)s." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "Trimiteţi" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Toate paginile transformate pentru document: %s , au fost șterse cu succes." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "Nu mai sunt pagini în acest document." - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Sunteți deja la prima pagină a acestui document" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "Tipărește: %s" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -918,9 +1008,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1065,9 +1152,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/ru/LC_MESSAGES/django.mo index 736eed4315..78a379dbb6 100644 Binary files a/mayan/apps/documents/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/ru/LC_MESSAGES/django.po b/mayan/apps/documents/locale/ru/LC_MESSAGES/django.po index 6d6710be91..e687fac70f 100644 --- a/mayan/apps/documents/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/ru/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-11-02 04:15+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" @@ -19,85 +19,110 @@ msgstr "" "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" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Документы" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "Типы документов" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "Документы в корзине" + +#: apps.py:145 msgid "Create a document type" msgstr "Создать тип документа" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "Каждому загруженому документу должен быть присвоен тип документа, - это основной способ, которым Mayan EDMS распределяет документы по категориям." -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "Надпись" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "MIME-тип любых версий документа" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "MIME type" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "Миниатюра" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "Тип" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "Доступно" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "Время и дата удаления" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "Время и дата" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "Кодировка" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Комментарий" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "Новых документов в месяц" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "Новых версий документов в месяц" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "Новых страниц документов в месяц" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "Всего документов в месяц" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "Новых версий документов в месяц" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "Всего страниц документов в месяц" @@ -131,68 +156,77 @@ msgstr "Версия документа была восстановлена" msgid "Document viewed" msgstr "Документ просмотрен" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Изображение страницы" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "Страницы документа (%d)" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Быстро переименовать документ" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Дата добавления" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "Язык" + #: forms.py:122 +msgid "Unknown" +msgstr "Неизвестно" + +#: forms.py:130 msgid "File mimetype" msgstr "Mime тип файла" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Ни один" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "Кодировка файла" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Размер" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Существует в хранилище" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Путь к файлу в хранилище" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Контрольная сумма" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Страницы" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Тип документа" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Сжать" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -203,169 +237,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "Скачать документ в исходном, или в сжатом формате. Этот вариант доступен только при загрузке одного документа, для нескольких документов будет использован сжатый файл." -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Имя сжатого файла" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "Имя файла сжатого файла, который будет содержать загружаемые документы, если выбран предыдущий параметр." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Диапазон страниц" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "Предварительный просмотр" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "Свойства" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "Версии" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "Очистить преобразования" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "Удалить" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "Переместить в корзину" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "Редактировать свойства" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "Изменить тип" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Скачать" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "Печать" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "Пересчитать количество страниц" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "Восстановить" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "Скачать версию" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "Все документы" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "Последние документы" -#: links.py:144 -msgid "Trash" -msgstr "Корзина" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" +msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Очистить графику для ускорения отображения документов и интерактивных преобразований." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "Очистить кэш изображений документа" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "Очистить корзину" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "Первая страница" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "Последняя страница" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "Предыдущая страница" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "Следующая страница" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "Документ" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "Повернуть влево" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "Повернуть вправо" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "Вернуть вид" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "Увеличить" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "Уменьшить" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "Возврат" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "Создать тип документа" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "Редактировать" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "Добавить быструю метку к документу" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "Быстрые метки" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "Типы документов" - #: literals.py:14 msgid "Default" msgstr "Умолчание" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "Все страницы" @@ -403,99 +443,97 @@ msgstr "Единица измерения периода удаления" msgid "Documents types" msgstr "Типы документов" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "Название документа" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Описание" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "Добавлено" -#: models.py:169 -msgid "Language" -msgstr "Язык" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "В корзине?" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "Время и дата удаления" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "Заглушка документа - это запись в базе данных без самого документа. Документ может оказатсья заглушкой, если его загрузка оборвалась, или выполняется его отложенная загрузка через API." -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "Является заглушкой?" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "Заглушка документа, ид: %d" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "временная метка" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "Файл" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "Версия документа" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "Быстрая метка" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "Номер страницы" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Страница %(page_num)d из %(total_pages)d %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "Страница документа" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "Страницы документа" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" -msgstr "Блокировка добавления новых версий" +#: models.py:801 +msgid "Filename" +msgstr "Имя файла" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" -msgstr "Блокировки добавления новых версий" +#: models.py:804 +msgid "Document page cached image" +msgstr "" -#: models.py:794 +#: models.py:805 +msgid "Document page cached images" +msgstr "" + +#: models.py:827 msgid "User" msgstr "Пользователь" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "Допущен" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "Недавние документы" @@ -512,7 +550,7 @@ msgstr "Удаление документов" msgid "Trash documents" msgstr "Переместить документы в корзину" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Загрузка документов" @@ -570,243 +608,237 @@ msgstr "Редактировать типы документов" msgid "View document types" msgstr "Просмотр типов документов" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Максимальное количество последних (созданных, измененных, просмотренных) документов, запоминаемых для каждого пользователя." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Процент увеличения страницы документа пользователем." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Максимальный процент увеличения страницы документа пользователем." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Процент уменьшения масштаба страницы документа в интерактивном режиме." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Градус поворота страницы документа в интерактивном режиме." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "Язык документов по умолчанию (в формате ISO639-2)." -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "Список поддерживаемых языков документов" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "Очистить кэш изображений документа?" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "Очистка кэша документов успешно помещена в очередь." - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "Документы в корзине" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "Удалить выбранный документ?" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "Документ: %(document)s удалён." - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "Удалить выбранные документы?" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "Правка свойств документа: %s" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "Восстановить выбранный документ?" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "Документ %(document)s восстановлен." - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "Восстановить выбранные документы?" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "Страницы документа: %s" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr " Нет более страниц в этом документе" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Вы уже на первой странице этого документа" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "Изображение для: %s" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "Предпросмотр документа: %s" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "Перместить \"%s\" в корзину?" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "Документ %(document)s успешно перемещён в корзину." - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "Переместить выделенные документы в корзину?" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "Документы с типом: %s" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "Все документы этого типа будут также удалены." -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "Удалить тип документа: %s?" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "Редактировать тип документа: %s" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "Создать быструю метку для типа документа: %s" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "Редактировать быструю метку %(filename)s\" с типа документов \"%(document_type)s\"" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "Снять быструю метку %(label)s с типа документа \"%(document_type)s\"?" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "Быстрые метки для типа документа: %s" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "Версии документа: %s" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Все более поздние версии после этого будут удалены" -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "Вернуться к этой версии?" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Версия документа восстановлена" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Ошибка получения версии документа %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "Удалить выбранный документ?" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" -msgstr "Свойства документа: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." +msgstr "Документ: %(document)s удалён." -#: views.py:639 -msgid "Empty trash?" -msgstr "Очистить корзину?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" +msgstr "Удалить выбранные документы?" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" -msgstr "Корзина успешно очищена" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" +msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Необходимо указатьть хотя бы один документ." +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "Тип документа для \"%s\" успешно изменён." -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "Подтвердить" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" +msgstr "Правка свойств документа: %s" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "Изменить тип выбранного документа." -msgstr[1] "Изменить тип выбранных документов." -msgstr[2] "Изменить тип выбранных документов." -msgstr[3] "Изменить тип выбранных документов." +#: views/document_views.py:200 +msgid "Restore the selected document?" +msgstr "Восстановить выбранный документ?" -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." -msgstr "Должен быть хотя бы один документ или версия." +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." +msgstr "Документ %(document)s восстановлен." -#: views.py:819 -msgid "Documents to be downloaded" -msgstr "Документы для загрузки" +#: views/document_views.py:229 +msgid "Restore the selected documents?" +msgstr "Восстановить выбранные документы?" -#: views.py:828 -msgid "Date and time" -msgstr "Дата и время" +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" +msgstr "Предпросмотр документа: %s" -#: views.py:931 -msgid "At least one document must be selected." -msgstr "Хотя бы один документ должен быть выбран." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" +msgstr "Перместить \"%s\" в корзину?" -#: views.py:954 -msgid "Document queued for page count recalculation." -msgstr "Документ отправлен в очередь на обновление количества страниц." +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "Документ %(document)s успешно перемещён в корзину." -#: views.py:955 -msgid "Documents queued for page count recalculation." -msgstr "Документы отправлены в очередь на обновление количества страниц." +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "Переместить выделенные документы в корзину?" -#: views.py:964 +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "Свойства документа: %s" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "Очистить корзину?" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "Корзина успешно очищена" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "Пересчитать количество страниц для выбранного документа?" @@ -814,50 +846,108 @@ msgstr[1] "Пересчитать количество страниц для в msgstr[2] "Пересчитать количество страниц для выбранных документов?" msgstr[3] "Пересчитать количество страниц для выбранных документов?" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Ошибка при удалении страницы для преобразования документов: %(document)s; %(error)s." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "Подтвердить" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Все преобразования страницы для документа: %s успешно удалены." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "Очистить все преобразования страниц для выделенных документов?" -msgstr[1] "Очистить все преобразования страниц для выделенных документов?" -msgstr[2] "Очистить все преобразования страниц для выделенных документов?" -msgstr[3] "Очистить все преобразования страниц для выделенных документов?" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr " Нет более страниц в этом документе" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Вы уже на первой странице этого документа" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "Печать: %s" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "Очистить кэш изображений документа?" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "Очистка кэша документов успешно помещена в очередь." + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "Страница %(page_number)d из %(total_pages)d" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "Изображение страницы документа" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -921,9 +1011,6 @@ msgstr "Изображение страницы документа" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1069,9 +1156,6 @@ msgstr "Изображение страницы документа" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/sl_SI/LC_MESSAGES/django.mo index 2a47c9c84e..1b712de278 100644 Binary files a/mayan/apps/documents/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/documents/locale/sl_SI/LC_MESSAGES/django.po index 4a08190f3b..e94bd00cee 100644 --- a/mayan/apps/documents/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-11-17 08:59+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-23 16:43+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,85 +18,110 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Dokumenti" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "Oznaka" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "MIME tip" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Komentar" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -130,68 +155,77 @@ msgstr "" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "Slika strani" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Hitro preimenovanje dokumenta" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Dodano datum" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "" + #: forms.py:122 +msgid "Unknown" +msgstr "" + +#: forms.py:130 msgid "File mimetype" msgstr "MIME vrsta datoteke" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "Brez" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Velikost datoteke" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "Obstaja v shrambi" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "Pot datoteke v shrambi" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "Nadzorna vsota" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Strani" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Tip dokumenta" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Stisni" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -202,169 +236,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "Ime stisnjene datoteke" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "Ime skrčene datotteke, ki do vsebovala datoteke za prenos, če je bila prejšnja opcija izbrana." -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Obseg strani" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "Prenos" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "Počistite grafične predstavitve, ki se uporabljajo za pospešitev prikaza dokumentov in rezultatov interaktivnih transformacij." -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" -msgstr "" +msgstr "Dokument" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "" - #: literals.py:14 msgid "Default" msgstr "" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -402,99 +442,97 @@ msgstr "" msgid "Documents types" msgstr "" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Opis" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "" -#: models.py:169 -msgid "Language" -msgstr "" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Stran %(page_num)d od %(total_pages)d dokumenta %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "Ime datoteke" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "" @@ -511,7 +549,7 @@ msgstr "Izbiši dokumente" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Prenesi dokumente" @@ -569,243 +607,237 @@ msgstr "Uredi tipe dokumentov" msgid "View document types" msgstr "Poglej tip dokumenta" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Največje število zadnjih (kreiranih, urejenih, pogledanih) dokumentov za prikaz po uporabniku." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Znesek v procentih za približane oziroma oddaljene strani na dokument v uporabniškem vmesniku." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Največji znesek v procentih (%), ki je dovoljen uporabniku za približevanje strani v dokumentu." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Naamanjši znesek v procentih (%), ki je dovoljen uporabniku za približevanje strani v dokumentu." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Število v stopinjah za rotiranje strani dokumenta ob uporabniški interakciji." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "Ni več strani v tem dokumentu" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "Ste že na prvi strani dokumenta" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "Vse prejšnje verzije bodo tudi izbrisane." -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "Povrnitev verzije dokumenta je bila uspešna" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "Napaka v povrnitvi dokumenta verzija: %s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:639 -msgid "Empty trash?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" -msgstr "" - -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Potrebno je podati vsaj en dokument" - -#: views.py:704 +#: views/document_views.py:120 #, python-format -msgid "Document type for \"%s\" changed successfully." +msgid "Document type change request performed on %(count)d document" msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" msgstr "" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" +#: views/document_views.py:164 +#, python-format +msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:828 -msgid "Date and time" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" msgstr "" -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:964 +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" +msgstr "" + +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" +msgstr "" + +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "" + +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" @@ -813,50 +845,108 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "Napaka v izbrisu preoblikovanj strani za dokument: %(document)s; %(error)s." -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "Vsa preoblikovanja strani dokumenta: %s, so bila uspešno izbrisana." +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "Ni več strani v tem dokumentu" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "Ste že na prvi strani dokumenta" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -920,9 +1010,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1068,9 +1155,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/vi_VN/LC_MESSAGES/django.mo index b27e5d7071..0818afdff0 100644 Binary files a/mayan/apps/documents/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/documents/locale/vi_VN/LC_MESSAGES/django.po index ef1d4d0f27..986dd380f1 100644 --- a/mayan/apps/documents/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/vi_VN/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -18,85 +18,110 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "Tài liệu" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "MIME type" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "Chú thích" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -130,68 +155,77 @@ msgstr "" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "Sửa nhanh tên tài liệu" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "Ngày thêm vào" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "" + #: forms.py:122 +msgid "Unknown" +msgstr "" + +#: forms.py:130 msgid "File mimetype" msgstr "Kiểu file" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "None" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "Kích thước file" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "Trang" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "Kiểu tài liệu" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "Nén" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -202,169 +236,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "" -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "Dãy trang" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "" -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "Sửa" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "" - #: literals.py:14 msgid "Default" msgstr "Mặc định" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -402,99 +442,97 @@ msgstr "" msgid "Documents types" msgstr "" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "Mô tả" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "" -#: models.py:169 -msgid "Language" -msgstr "" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "File" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "Trang %(page_num)d ngoài phạm vi của %(total_pages)d của %(document)s" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "Tên file" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "Người dùng" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "" @@ -511,7 +549,7 @@ msgstr "Xóa tài liệu" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "Tải xuống tài liệu" @@ -569,285 +607,337 @@ msgstr "Sửa kiểu tài liệu" msgid "View document types" msgstr "" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "Số lượng lớn nhất gần nhất (tạo, sửa, xem) số tài liệu để nhớ mỗi người dùng." -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "Số phần trăm phóng to hoặc thu nhỏ một trang tài liệu mỗi tác động của người dùng." -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "Số phần trăm lớn nhất (%) cho phép người dùng phóng to một trang tài liệu." -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "Số phần trăm nhỏ nhất (%) cho phép người dùng thu nhỏ trang tài liệu." -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "Gái trị góc quay trang tài liệu mỗi lần tác động." -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "" -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:639 -msgid "Empty trash?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "Cần cung cấp ít nhất một tài liệu." +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" msgstr "" -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "" - -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:828 -msgid "Date and time" +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." msgstr "" -#: views.py:964 +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "" -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." +msgid "Clone page transformations for document: %s" msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -911,9 +1001,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1056,9 +1143,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/documents/locale/zh_CN/LC_MESSAGES/django.mo index 366bed20c6..34846d16da 100644 Binary files a/mayan/apps/documents/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/documents/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/documents/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/documents/locale/zh_CN/LC_MESSAGES/django.po index 3681148ca4..89fa67822a 100644 --- a/mayan/apps/documents/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/documents/locale/zh_CN/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-10-28 07:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:22-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -18,85 +18,110 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:83 apps.py:163 apps.py:384 models.py:231 permissions.py:7 -#: settings.py:17 +#: apps.py:87 apps.py:231 apps.py:453 menus.py:8 models.py:225 +#: permissions.py:7 settings.py:13 msgid "Documents" msgstr "文档" -#: apps.py:98 +#: apps.py:110 +#| msgid "View document types" +msgid "New pages this month" +msgstr "" + +#: apps.py:119 +#| msgid "New document filename" +msgid "New documents this month" +msgstr "" + +#: apps.py:128 +#| msgid "Transform documents" +msgid "Total documents" +msgstr "" + +#: apps.py:134 links.py:273 links.py:278 views/document_type_views.py:49 +msgid "Document types" +msgstr "" + +#: apps.py:140 views/document_views.py:69 +#| msgid "Documents in storage: %d" +msgid "Documents in trash" +msgstr "" + +#: apps.py:145 msgid "Create a document type" msgstr "" -#: apps.py:100 +#: apps.py:147 msgid "" "Every uploaded document must be assigned a document type, it is the basic " "way Mayan EDMS categorizes documents." msgstr "" -#: apps.py:107 models.py:65 models.py:158 models.py:626 search.py:20 +#: apps.py:154 models.py:65 models.py:153 models.py:618 search.py:21 +#: search.py:39 msgid "Label" msgstr "" -#: apps.py:112 +#: apps.py:159 msgid "The MIME type of any of the versions of a document" msgstr "" -#: apps.py:113 apps.py:197 search.py:18 views.py:829 +#: apps.py:160 apps.py:262 search.py:19 search.py:36 msgid "MIME type" msgstr "MIME类型" -#: apps.py:151 apps.py:175 +#: apps.py:202 apps.py:212 apps.py:219 apps.py:243 msgid "Thumbnail" msgstr "" -#: apps.py:159 apps.py:185 +#: apps.py:208 apps.py:226 apps.py:250 msgid "Type" msgstr "" -#: apps.py:170 models.py:628 +#: apps.py:238 models.py:620 msgid "Enabled" msgstr "" -#: apps.py:188 +#: apps.py:253 msgid "Date time trashed" msgstr "" -#: apps.py:193 +#: apps.py:258 msgid "Time and date" msgstr "" -#: apps.py:201 views.py:830 +#: apps.py:266 msgid "Encoding" msgstr "" -#: apps.py:205 models.py:357 +#: apps.py:270 models.py:351 msgid "Comment" msgstr "评论" -#: apps.py:387 +#: apps.py:456 #| msgid "New document filename" msgid "New documents per month" msgstr "" -#: apps.py:394 +#: apps.py:463 #| msgid "Document version reverted successfully" msgid "New document versions per month" msgstr "" -#: apps.py:401 +#: apps.py:470 #| msgid "View document types" msgid "New document pages per month" msgstr "" -#: apps.py:408 +#: apps.py:477 msgid "Total documents at each month" msgstr "" -#: apps.py:415 +#: apps.py:484 msgid "Total document versions at each month" msgstr "" -#: apps.py:422 +#: apps.py:491 msgid "Total document pages at each month" msgstr "" @@ -130,68 +155,77 @@ msgstr "" msgid "Document viewed" msgstr "" -#: forms.py:42 links.py:205 +#: forms.py:39 links.py:212 msgid "Page image" msgstr "页面图片" -#: forms.py:56 forms.py:59 +#: forms.py:51 forms.py:54 #, python-format msgid "Document pages (%d)" msgstr "文档页(%d)" -#: forms.py:90 +#: forms.py:92 msgid "Quick document rename" msgstr "快速文档重命名" -#: forms.py:112 +#: forms.py:114 msgid "Date added" msgstr "添加日期" -#: forms.py:116 +#: forms.py:118 msgid "UUID" msgstr "UUID" +#: forms.py:120 models.py:163 +msgid "Language" +msgstr "" + #: forms.py:122 +msgid "Unknown" +msgstr "" + +#: forms.py:130 msgid "File mimetype" msgstr "文件mimetype" -#: forms.py:123 forms.py:128 +#: forms.py:131 forms.py:136 msgid "None" msgstr "无" -#: forms.py:126 +#: forms.py:134 msgid "File encoding" msgstr "" -#: forms.py:132 +#: forms.py:140 msgid "File size" msgstr "文件大小" -#: forms.py:137 +#: forms.py:145 msgid "Exists in storage" msgstr "在存储中存在" -#: forms.py:139 +#: forms.py:147 msgid "File path in storage" msgstr "在存储中的文件路径" -#: forms.py:142 models.py:372 +#: forms.py:150 models.py:366 msgid "Checksum" msgstr "校验码" -#: forms.py:143 links.py:58 +#: forms.py:151 links.py:60 msgid "Pages" msgstr "页面" -#: forms.py:174 models.py:105 models.py:154 models.py:623 search.py:15 +#: forms.py:179 models.py:105 models.py:149 models.py:615 search.py:16 +#: search.py:32 msgid "Document type" msgstr "文档类型" -#: forms.py:190 +#: forms.py:195 msgid "Compress" msgstr "压缩" -#: forms.py:192 +#: forms.py:197 #| msgid "" #| "ad the document in the original format or in a compressed manner. s ion is " #| "selectable only when downloading one document, for tiple uments, the bundle " @@ -202,169 +236,175 @@ msgid "" "documents, the bundle will always be downloads as a compressed file." msgstr "" -#: forms.py:199 +#: forms.py:204 msgid "Compressed filename" msgstr "压缩的文件名" -#: forms.py:202 +#: forms.py:207 msgid "" "The filename of the compressed file that will contain the documents to be " "downloaded, if the previous option is selected." msgstr "如果选择了前面选项,压缩文件的文件名将包含要下载的文档" -#: forms.py:219 literals.py:24 +#: forms.py:225 literals.py:23 msgid "Page range" msgstr "页范围" -#: links.py:43 +#: forms.py:231 +msgid "" +"Page number from which all the transformation will be cloned. Existing " +"transformations will be lost." +msgstr "" + +#: links.py:45 msgid "Preview" msgstr "" -#: links.py:48 +#: links.py:50 msgid "Properties" msgstr "" -#: links.py:53 +#: links.py:55 msgid "Versions" msgstr "" -#: links.py:64 links.py:105 +#: links.py:66 links.py:112 msgid "Clear transformations" msgstr "" -#: links.py:69 links.py:113 links.py:238 links.py:252 +#: links.py:71 +msgid "Clone transformations" +msgstr "" + +#: links.py:76 links.py:120 links.py:247 links.py:261 msgid "Delete" msgstr "" -#: links.py:74 links.py:109 +#: links.py:81 links.py:116 msgid "Move to trash" msgstr "" -#: links.py:79 +#: links.py:86 msgid "Edit properties" msgstr "" -#: links.py:83 links.py:117 +#: links.py:90 links.py:124 msgid "Change type" msgstr "" -#: links.py:87 links.py:121 views.py:901 +#: links.py:94 links.py:128 views/document_views.py:380 msgid "Download" msgstr "下载" -#: links.py:91 +#: links.py:98 msgid "Print" msgstr "" -#: links.py:96 links.py:124 +#: links.py:103 links.py:131 msgid "Recalculate page count" msgstr "" -#: links.py:100 links.py:128 +#: links.py:107 links.py:135 msgid "Restore" msgstr "" -#: links.py:132 +#: links.py:139 msgid "Download version" msgstr "" -#: links.py:137 views.py:82 +#: links.py:144 views/document_views.py:51 msgid "All documents" msgstr "" -#: links.py:140 models.py:815 views.py:656 +#: links.py:147 models.py:848 views/document_views.py:341 msgid "Recent documents" msgstr "" -#: links.py:144 -msgid "Trash" +#: links.py:151 +#| msgid "Transform documents" +msgid "Trash can" msgstr "" -#: links.py:152 +#: links.py:159 msgid "" "Clear the graphics representations used to speed up the documents' display " "and interactive transformations results." msgstr "清除图像信息有助于加速文档显示和变换结果交互。" -#: links.py:155 +#: links.py:162 #| msgid "Clear the document image cache" msgid "Clear document image cache" msgstr "" -#: links.py:159 permissions.py:47 +#: links.py:166 permissions.py:47 msgid "Empty trash" msgstr "" -#: links.py:167 +#: links.py:174 msgid "First page" msgstr "" -#: links.py:172 +#: links.py:179 msgid "Last page" msgstr "" -#: links.py:179 +#: links.py:186 msgid "Previous page" msgstr "" -#: links.py:185 +#: links.py:192 msgid "Next page" msgstr "" -#: links.py:191 models.py:230 models.py:351 models.py:778 models.py:797 -#: views.py:827 +#: links.py:198 models.py:224 models.py:345 models.py:830 msgid "Document" msgstr "" -#: links.py:196 +#: links.py:203 msgid "Rotate left" msgstr "" -#: links.py:201 +#: links.py:208 msgid "Rotate right" msgstr "" -#: links.py:209 +#: links.py:216 msgid "Reset view" msgstr "" -#: links.py:214 +#: links.py:221 msgid "Zoom in" msgstr "" -#: links.py:219 +#: links.py:227 msgid "Zoom out" msgstr "" -#: links.py:227 +#: links.py:236 msgid "Revert" msgstr "" -#: links.py:234 views.py:419 +#: links.py:243 views/document_type_views.py:64 msgid "Create document type" msgstr "" -#: links.py:242 links.py:256 +#: links.py:251 links.py:265 msgid "Edit" msgstr "" -#: links.py:247 +#: links.py:256 msgid "Add quick label to document type" msgstr "" -#: links.py:260 models.py:634 +#: links.py:269 models.py:626 msgid "Quick labels" msgstr "" -#: links.py:264 links.py:269 views.py:404 -msgid "Document types" -msgstr "" - #: literals.py:14 msgid "Default" msgstr "" -#: literals.py:24 +#: literals.py:23 msgid "All pages" msgstr "" @@ -402,99 +442,97 @@ msgstr "" msgid "Documents types" msgstr "" -#: models.py:158 +#: models.py:153 msgid "The name of the document" msgstr "" -#: models.py:161 search.py:21 +#: models.py:156 search.py:22 search.py:42 msgid "Description" msgstr "描述" -#: models.py:164 +#: models.py:159 msgid "Added" msgstr "" -#: models.py:169 -msgid "Language" -msgstr "" - -#: models.py:173 +#: models.py:167 msgid "In trash?" msgstr "" -#: models.py:178 +#: models.py:172 msgid "Date and time trashed" msgstr "" -#: models.py:182 +#: models.py:176 msgid "" "A document stub is a document with an entry on the database but no file " "uploaded. This could be an interrupted upload or a deferred upload via the " "API." msgstr "" -#: models.py:185 +#: models.py:179 msgid "Is stub?" msgstr "" -#: models.py:193 +#: models.py:187 #, python-format #| msgid "Document types: %d" msgid "Document stub, id: %d" msgstr "" -#: models.py:354 +#: models.py:348 msgid "Timestamp" msgstr "" -#: models.py:363 +#: models.py:357 msgid "File" msgstr "文件" -#: models.py:445 models.py:446 models.py:647 +#: models.py:437 models.py:438 models.py:639 msgid "Document version" msgstr "" -#: models.py:633 +#: models.py:625 msgid "Quick label" msgstr "" -#: models.py:651 +#: models.py:643 msgid "Page number" msgstr "" -#: models.py:656 +#: models.py:648 #, python-format msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" msgstr "文档%(document)s页%(page_num)d超出%(total_pages)d" -#: models.py:672 +#: models.py:664 models.py:799 models.py:816 msgid "Document page" msgstr "" -#: models.py:673 +#: models.py:665 models.py:817 msgid "Document pages" msgstr "" -#: models.py:783 -#| msgid "Version update" -msgid "New version block" +#: models.py:801 +msgid "Filename" +msgstr "文件名" + +#: models.py:804 +msgid "Document page cached image" msgstr "" -#: models.py:784 -#| msgid "Version update" -msgid "New version blocks" +#: models.py:805 +msgid "Document page cached images" msgstr "" -#: models.py:794 +#: models.py:827 msgid "User" msgstr "用户" -#: models.py:800 +#: models.py:833 msgid "Accessed" msgstr "" -#: models.py:814 +#: models.py:847 msgid "Recent document" msgstr "" @@ -511,7 +549,7 @@ msgstr "删除文档" msgid "Trash documents" msgstr "" -#: permissions.py:19 views.py:903 +#: permissions.py:19 views/document_views.py:382 msgid "Download documents" msgstr "下载文档" @@ -569,285 +607,337 @@ msgstr "编辑文档类型" msgid "View document types" msgstr "查看文档类型" -#: settings.py:37 +#: settings.py:29 msgid "" "Maximum number of recent (created, edited, viewed) documents to remember per" " user." msgstr "记住每个用户近期文档的最大数(新建, 编辑, 查看)" -#: settings.py:44 +#: settings.py:40 msgid "Amount in percent zoom in or out a document page per user interaction." msgstr "每个交互用户文档页的放大或缩小百分比" -#: settings.py:51 +#: settings.py:47 msgid "" "Maximum amount in percent (%) to allow user to zoom in a document page " "interactively." msgstr "文档交互页中允许用户放大的最大百分比(%)" -#: settings.py:58 +#: settings.py:54 msgid "" "Minimum amount in percent (%) to allow user to zoom out a document page " "interactively." msgstr "文档交互页中允许用户缩小的最小百分比(%)" -#: settings.py:65 +#: settings.py:61 msgid "Amount in degrees to rotate a document page per user interaction." msgstr "每个交互用户中文档页的旋转度数" -#: settings.py:74 +#: settings.py:70 msgid "Default documents language (in ISO639-2 format)." msgstr "" -#: settings.py:78 +#: settings.py:74 msgid "List of supported document languages." msgstr "" -#: views.py:68 -#| msgid "Clear the document image cache" -msgid "Clear the document image cache?" -msgstr "" - -#: views.py:75 -msgid "Document cache clearing queued successfully." -msgstr "" - -#: views.py:100 -#| msgid "Documents in storage: %d" -msgid "Documents in trash" -msgstr "" - -#: views.py:122 -msgid "Delete the selected document?" -msgstr "" - -#: views.py:145 -#, python-format -#| msgid "Document \"%(document)s\" deleted by %(fullname)s." -msgid "Document: %(document)s deleted." -msgstr "" - -#: views.py:153 -msgid "Delete the selected documents?" -msgstr "" - -#: views.py:175 -#, python-format -msgid "Edit properties of document: %s" -msgstr "" - -#: views.py:191 -msgid "Restore the selected document?" -msgstr "" - -#: views.py:216 -#, python-format -#| msgid "Document: %(document)s delete error: %(error)s" -msgid "Document: %(document)s restored." -msgstr "" - -#: views.py:224 -msgid "Restore the selected documents?" -msgstr "" - -#: views.py:256 +#: views/document_page_views.py:49 #, python-format msgid "Pages for document: %s" msgstr "" -#: views.py:284 +#: views/document_page_views.py:101 +msgid "Unknown view keyword argument schema, unable to redirect." +msgstr "" + +#: views/document_page_views.py:133 +msgid "There are no more pages in this document" +msgstr "此文档中无更多页" + +#: views/document_page_views.py:150 +msgid "You are already at the first page of this document" +msgstr "你已经在此文档的第一页了" + +#: views/document_page_views.py:178 #, python-format msgid "Image of: %s" msgstr "" -#: views.py:330 -#, python-format -msgid "Preview of document: %s" -msgstr "" - -#: views.py:338 -#, python-format -msgid "Move \"%s\" to the trash?" -msgstr "" - -#: views.py:365 -#, python-format -#| msgid "Document deleted successfully." -msgid "Document: %(document)s moved to trash successfully." -msgstr "" - -#: views.py:378 -msgid "Move the selected documents to the trash?" -msgstr "" - -#: views.py:393 +#: views/document_type_views.py:38 #, python-format #| msgid "documents of type \"%s\"" msgid "Documents of type: %s" msgstr "" -#: views.py:430 +#: views/document_type_views.py:75 msgid "All documents of this type will be deleted too." msgstr "" -#: views.py:432 +#: views/document_type_views.py:77 #, python-format #| msgid "Delete document types" msgid "Delete the document type: %s?" msgstr "" -#: views.py:448 +#: views/document_type_views.py:93 #, python-format msgid "Edit document type: %s" msgstr "" -#: views.py:478 +#: views/document_type_views.py:118 #, python-format msgid "Create quick label for document type: %s" msgstr "" -#: views.py:499 +#: views/document_type_views.py:139 #, python-format msgid "Edit quick label \"%(filename)s\" from document type \"%(document_type)s\"" msgstr "" -#: views.py:524 +#: views/document_type_views.py:164 #, python-format msgid "" "Delete the quick label: %(label)s, from document type \"%(document_type)s\"?" msgstr "" -#: views.py:552 +#: views/document_type_views.py:192 #, python-format msgid "Quick labels for document type: %s" msgstr "" -#: views.py:583 +#: views/document_version_views.py:42 #, python-format msgid "Versions of document: %s" msgstr "" -#: views.py:597 +#: views/document_version_views.py:56 msgid "All later version after this one will be deleted too." msgstr "此版本以后的所有版本将被删除" -#: views.py:600 +#: views/document_version_views.py:59 #| msgid "Revert documents to a previous version" msgid "Revert to this version?" msgstr "" -#: views.py:610 +#: views/document_version_views.py:69 msgid "Document version reverted successfully" msgstr "文档版本恢复成功" -#: views.py:615 +#: views/document_version_views.py:74 #, python-format msgid "Error reverting document version; %s" msgstr "恢复文档版本失败%s" -#: views.py:633 +#: views/document_views.py:81 +msgid "Delete the selected document?" +msgstr "" + +#: views/document_views.py:100 #, python-format -msgid "Properties for document: %s" +#| msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgid "Document: %(document)s deleted." msgstr "" -#: views.py:639 -msgid "Empty trash?" +#: views/document_views.py:108 +msgid "Delete the selected documents?" msgstr "" -#: views.py:650 -#| msgid "Document deleted successfully." -msgid "Trash emptied successfully" +#: views/document_views.py:120 +#, python-format +msgid "Document type change request performed on %(count)d document" msgstr "" -#: views.py:685 views.py:996 -msgid "Must provide at least one document." -msgstr "至少要有一个文档" +#: views/document_views.py:123 +#, python-format +msgid "Document type change request performed on %(count)d documents" +msgstr "" -#: views.py:704 +#: views/document_views.py:130 +msgid "Change" +msgstr "" + +#: views/document_views.py:132 +msgid "Change the type of the selected document" +msgid_plural "Change the type of the selected documents" +msgstr[0] "" + +#: views/document_views.py:143 +#, python-format +msgid "Change the type of the document: %s" +msgstr "" + +#: views/document_views.py:164 #, python-format msgid "Document type for \"%s\" changed successfully." msgstr "" -#: views.py:716 views.py:1235 -msgid "Submit" -msgstr "提交" - -#: views.py:720 -msgid "Change the type of the selected document." -msgid_plural "Change the type of the selected documents." -msgstr[0] "" - -#: views.py:799 -#| msgid "Must provide at least one document." -msgid "Must provide at least one document or version." +#: views/document_views.py:184 +#, python-format +msgid "Edit properties of document: %s" msgstr "" -#: views.py:819 -msgid "Documents to be downloaded" +#: views/document_views.py:200 +msgid "Restore the selected document?" msgstr "" -#: views.py:828 -msgid "Date and time" +#: views/document_views.py:221 +#, python-format +#| msgid "Document: %(document)s delete error: %(error)s" +msgid "Document: %(document)s restored." msgstr "" -#: views.py:931 -msgid "At least one document must be selected." +#: views/document_views.py:229 +msgid "Restore the selected documents?" msgstr "" -#: views.py:954 -msgid "Document queued for page count recalculation." +#: views/document_views.py:256 +#, python-format +msgid "Preview of document: %s" msgstr "" -#: views.py:955 -msgid "Documents queued for page count recalculation." +#: views/document_views.py:264 +#, python-format +msgid "Move \"%s\" to the trash?" msgstr "" -#: views.py:964 +#: views/document_views.py:287 +#, python-format +#| msgid "Document deleted successfully." +msgid "Document: %(document)s moved to trash successfully." +msgstr "" + +#: views/document_views.py:300 +msgid "Move the selected documents to the trash?" +msgstr "" + +#: views/document_views.py:318 +#, python-format +msgid "Properties for document: %s" +msgstr "" + +#: views/document_views.py:324 +msgid "Empty trash?" +msgstr "" + +#: views/document_views.py:335 +#| msgid "Document deleted successfully." +msgid "Trash emptied successfully" +msgstr "" + +#: views/document_views.py:519 +#, python-format +msgid "%(count)d document queued for page count recalculation" +msgstr "" + +#: views/document_views.py:522 +#, python-format +msgid "%(count)d documents queued for page count recalculation" +msgstr "" + +#: views/document_views.py:530 msgid "Recalculate the page count of the selected document?" msgid_plural "Recalculate the page count of the selected documents?" msgstr[0] "" -#: views.py:1023 +#: views/document_views.py:541 +#, python-format +msgid "Recalculate the page count of the document: %s?" +msgstr "" + +#: views/document_views.py:558 +#, python-format +msgid "Transformation clear request processed for %(count)d document" +msgstr "" + +#: views/document_views.py:561 +#, python-format +msgid "Transformation clear request processed for %(count)d documents" +msgstr "" + +#: views/document_views.py:569 +msgid "Clear all the page transformations for the selected document?" +msgid_plural "Clear all the page transformations for the selected document?" +msgstr[0] "" + +#: views/document_views.py:580 +#, python-format +msgid "Clear all the page transformations for the document: %s?" +msgstr "" + +#: views/document_views.py:595 views/document_views.py:623 #, python-format msgid "" "Error deleting the page transformations for document: %(document)s; " "%(error)s." msgstr "删除文档: %(document)s变换页数失败%(error)s" -#: views.py:1032 +#: views/document_views.py:631 +#| msgid "Document page transformation created successfully." +msgid "Transformations cloned successfully." +msgstr "" + +#: views/document_views.py:646 views/document_views.py:701 +msgid "Submit" +msgstr "提交" + +#: views/document_views.py:648 #, python-format -msgid "" -"All the page transformations for document: %s, have been deleted " -"successfully." -msgstr "文档: %s的变换页数已经成功删除" +msgid "Clone page transformations for document: %s" +msgstr "" -#: views.py:1044 -msgid "Clear all the page transformations for the selected document?" -msgid_plural "Clear all the page transformations for the selected documents?" -msgstr[0] "" - -#: views.py:1078 -msgid "There are no more pages in this document" -msgstr "此文档中无更多页" - -#: views.py:1096 -msgid "You are already at the first page of this document" -msgstr "你已经在此文档的第一页了" - -#: views.py:1225 views.py:1234 +#: views/document_views.py:702 #, python-format msgid "Print: %s" msgstr "" -#: widgets.py:71 +#: views/misc_views.py:18 +#| msgid "Clear the document image cache" +msgid "Clear the document image cache?" +msgstr "" + +#: views/misc_views.py:25 +msgid "Document cache clearing queued successfully." +msgstr "" + +#: widgets.py:64 #, python-format msgid "Page %(page_number)d of %(total_pages)d" msgstr "" -#: widgets.py:100 +#: widgets.py:87 +#| msgid "Page image" +msgid "Clickable image" +msgstr "" + +#: widgets.py:242 msgid "Document page image" msgstr "" +#~ msgid "New version block" +#~ msgstr "Version update" + +#~ msgid "New version blocks" +#~ msgstr "Version update" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Must provide at least one document or version." +#~ msgstr "Must provide at least one document." + +#~ msgid "Documents to be downloaded" +#~ msgstr "documents to be downloaded" + +#~ msgid "Date and time" +#~ msgstr "Date added" + +#~ msgid "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." +#~ msgstr "" +#~ "All the page transformations for document: %s, have been deleted " +#~ "successfully." + #~ msgid "Document type changed successfully." #~ msgstr "Document type created successfully" @@ -911,9 +1001,6 @@ msgstr "" #~ msgid "Filenames" #~ msgstr "Filename" -#~ msgid "Filename" -#~ msgstr "Filename" - #~ msgid "Document type quick rename filename" #~ msgstr "document type quick rename filename" @@ -1056,9 +1143,6 @@ msgstr "" #~ msgid "Transformations for: %s" #~ msgstr "transformations for: %s" -#~ msgid "Document page transformation created successfully." -#~ msgstr "Document page transformation created successfully." - #~ msgid "Create new transformation for page: %(page)s of document: %(document)s" #~ msgstr "" #~ "Create new transformation for page: %(page)s of document: %(document)s" diff --git a/mayan/apps/documents/models.py b/mayan/apps/documents/models.py index 2461e89c64..a566bc5f90 100644 --- a/mayan/apps/documents/models.py +++ b/mayan/apps/documents/models.py @@ -141,6 +141,10 @@ class DocumentType(models.Model): class Document(models.Model): """ Defines a single document with it's fields and properties + Fields: + * uuid - UUID of a document, universally Unique ID. An unique identifier + generated for each document. No two documents can ever have the same UUID. + This ID is generated automatically. """ uuid = models.UUIDField(default=uuid.uuid4, editable=False) @@ -329,6 +333,18 @@ class DeletedDocument(Document): class DocumentVersion(models.Model): """ Model that describes a document version and its properties + Fields: + * mimetype - File mimetype. MIME types are a standard way to describe the + format of a file, in this case the file format of the document. + Some examples: "text/plain" or "image/jpeg". Mayan uses this to determine + how to render a document's file. More information: + http://www.freeformatter.com/mime-types-list.html + * encoding - File Encoding. The filesystem encoding of the document's + file: binary 7-bit, binary 8-bit, text, base64, etc. + * checksum - A hash/checkdigit/fingerprint generated from the document's + binary data. Only identical documents will have the same checksum. If a + document is modified after upload it's checksum will not match, used for + detecting file tampering among other things. """ _pre_open_hooks = {} _post_save_hooks = {} @@ -444,7 +460,9 @@ class DocumentVersion(models.Model): def exists(self): """ Returns a boolean value that indicates if the document's file - exists in storage + exists in storage. Returns True if the document's file is verified to + be in the document storage. This is a diagnostic flag to help users + detect if the storage has desynchronized (ie: Amazon's S3). """ return self.file.storage.exists(self.file.name) @@ -502,6 +520,9 @@ class DocumentVersion(models.Model): @property def page_count(self): + """ + The number of pages that the document posses. + """ return self.pages.count() def revert(self, _user=None): diff --git a/mayan/apps/documents/permissions.py b/mayan/apps/documents/permissions.py index c428188da4..c928a1a909 100644 --- a/mayan/apps/documents/permissions.py +++ b/mayan/apps/documents/permissions.py @@ -40,6 +40,10 @@ permission_document_version_revert = namespace.add_permission( name='document_version_revert', label=_('Revert documents to a previous version') ) +permission_document_version_view = namespace.add_permission( + name='document_version_view', + label=_('View documents\' versions list') +) permission_document_view = namespace.add_permission( name='document_view', label=_('View documents') ) diff --git a/mayan/apps/documents/serializers.py b/mayan/apps/documents/serializers.py index 82b13cb8b4..77a5fcf08d 100644 --- a/mayan/apps/documents/serializers.py +++ b/mayan/apps/documents/serializers.py @@ -1,71 +1,195 @@ from __future__ import unicode_literals from rest_framework import serializers +from rest_framework.reverse import reverse from common.models import SharedUploadedFile from .models import ( - Document, DocumentVersion, DocumentPage, DocumentType, RecentDocument + Document, DocumentVersion, DocumentPage, DocumentType, + DocumentTypeFilename, RecentDocument ) from .settings import setting_language from .tasks import task_upload_new_version class DocumentPageSerializer(serializers.HyperlinkedModelSerializer): - image = serializers.HyperlinkedIdentityField( - view_name='rest_api:documentpage-image' - ) + document_version_url = serializers.SerializerMethodField() + image_url = serializers.SerializerMethodField() + url = serializers.SerializerMethodField() class Meta: - extra_kwargs = { - 'url': {'view_name': 'rest_api:documentpage-detail'}, - 'document_version': { - 'view_name': 'rest_api:documentversion-detail' - } - } + fields = ('document_version_url', 'image_url', 'page_number', 'url') model = DocumentPage + def get_document_version_url(self, instance): + return reverse( + 'rest_api:documentversion-detail', args=( + instance.document.pk, instance.document_version.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + def get_image_url(self, instance): + return reverse( + 'rest_api:documentpage-image', args=( + instance.document.pk, instance.document_version.pk, + instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + def get_url(self, instance): + return reverse( + 'rest_api:documentpage-detail', args=( + instance.document.pk, instance.document_version.pk, + instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + +class DocumentTypeFilenameSerializer(serializers.ModelSerializer): + class Meta: + model = DocumentTypeFilename + fields = ('filename',) + class DocumentTypeSerializer(serializers.HyperlinkedModelSerializer): - documents = serializers.HyperlinkedIdentityField( + documents_url = serializers.HyperlinkedIdentityField( view_name='rest_api:documenttype-document-list', ) documents_count = serializers.SerializerMethodField() - - def get_documents_count(self, obj): - return obj.documents.count() + filenames = DocumentTypeFilenameSerializer(many=True, read_only=True) class Meta: extra_kwargs = { 'url': {'view_name': 'rest_api:documenttype-detail'}, } fields = ( - 'delete_time_period', 'delete_time_unit', 'documents', + 'delete_time_period', 'delete_time_unit', 'documents_url', + 'documents_count', 'id', 'label', 'filenames', 'trash_time_period', + 'trash_time_unit', 'url' + ) + model = DocumentType + + def get_documents_count(self, obj): + return obj.documents.count() + + +class WritableDocumentTypeSerializer(serializers.ModelSerializer): + documents_url = serializers.HyperlinkedIdentityField( + view_name='rest_api:documenttype-document-list', + ) + documents_count = serializers.SerializerMethodField() + + class Meta: + extra_kwargs = { + 'url': {'view_name': 'rest_api:documenttype-detail'}, + } + fields = ( + 'delete_time_period', 'delete_time_unit', 'documents_url', 'documents_count', 'id', 'label', 'trash_time_period', 'trash_time_unit', 'url' ) model = DocumentType + def get_documents_count(self, obj): + return obj.documents.count() + class DocumentVersionSerializer(serializers.HyperlinkedModelSerializer): - pages = DocumentPageSerializer(many=True, required=False, read_only=True) - revert = serializers.HyperlinkedIdentityField( - view_name='rest_api:documentversion-revert' - ) + document_url = serializers.SerializerMethodField() + download_url = serializers.SerializerMethodField() + pages_url = serializers.SerializerMethodField() + size = serializers.SerializerMethodField() + url = serializers.SerializerMethodField() class Meta: extra_kwargs = { 'document': {'view_name': 'rest_api:document-detail'}, 'file': {'use_url': False}, - 'url': {'view_name': 'rest_api:documentversion-detail'}, } + fields = ( + 'checksum', 'comment', 'document_url', 'download_url', 'encoding', + 'file', 'mimetype', 'pages_url', 'size', 'timestamp', 'url' + ) + model = DocumentVersion + read_only_fields = ('document', 'file', 'size') + + def get_size(self, instance): + return instance.size + + def get_document_url(self, instance): + return reverse( + 'rest_api:document-detail', args=( + instance.document.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + def get_download_url(self, instance): + return reverse( + 'rest_api:documentversion-download', args=( + instance.document.pk, instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + def get_pages_url(self, instance): + return reverse( + 'rest_api:documentversion-page-list', args=( + instance.document.pk, instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + def get_url(self, instance): + return reverse( + 'rest_api:documentversion-detail', args=( + instance.document.pk, instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + +class WritableDocumentVersionSerializer(serializers.ModelSerializer): + document_url = serializers.SerializerMethodField() + download_url = serializers.SerializerMethodField() + pages_url = serializers.SerializerMethodField() + url = serializers.SerializerMethodField() + + class Meta: + extra_kwargs = { + 'file': {'use_url': False}, + } + fields = ( + 'checksum', 'comment', 'document_url', 'download_url', 'encoding', + 'file', 'mimetype', 'pages_url', 'timestamp', 'url' + ) model = DocumentVersion read_only_fields = ('document', 'file') + def get_document_url(self, instance): + return reverse( + 'rest_api:document-detail', args=( + instance.document.pk, + ), request=self.context['request'], format=self.context['format'] + ) -class DocumentVersionRevertSerializer(DocumentVersionSerializer): - class Meta(DocumentVersionSerializer.Meta): - read_only_fields = ('comment', 'document',) + def get_download_url(self, instance): + return reverse( + 'rest_api:documentversion-download', args=( + instance.document.pk, instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + def get_pages_url(self, instance): + return reverse( + 'rest_api:documentversion-page-list', args=( + instance.document.pk, instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + def get_url(self, instance): + return reverse( + 'rest_api:documentversion-detail', args=( + instance.document.pk, instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) class NewDocumentVersionSerializer(serializers.Serializer): @@ -87,16 +211,13 @@ class NewDocumentVersionSerializer(serializers.Serializer): class DeletedDocumentSerializer(serializers.HyperlinkedModelSerializer): document_type_label = serializers.SerializerMethodField() restore = serializers.HyperlinkedIdentityField( - view_name='rest_api:deleteddocument-restore' + view_name='rest_api:trasheddocument-restore' ) - def get_document_type_label(self, instance): - return instance.document_type.label - class Meta: extra_kwargs = { 'document_type': {'view_name': 'rest_api:documenttype-detail'}, - 'url': {'view_name': 'rest_api:deleteddocument-detail'} + 'url': {'view_name': 'rest_api:trasheddocument-detail'} } fields = ( 'date_added', 'deleted_date_time', 'description', 'document_type', @@ -109,26 +230,44 @@ class DeletedDocumentSerializer(serializers.HyperlinkedModelSerializer): 'language' ) - -class DocumentSerializer(serializers.HyperlinkedModelSerializer): - document_type_label = serializers.SerializerMethodField() - latest_version = DocumentVersionSerializer(many=False, read_only=True) - versions = serializers.HyperlinkedIdentityField( - view_name='rest_api:document-version-list', - ) - def get_document_type_label(self, instance): return instance.document_type.label + +class DocumentSerializer(serializers.HyperlinkedModelSerializer): + document_type = DocumentTypeSerializer() + latest_version = DocumentVersionSerializer(many=False, read_only=True) + versions_url = serializers.HyperlinkedIdentityField( + view_name='rest_api:document-version-list', + ) + class Meta: extra_kwargs = { 'document_type': {'view_name': 'rest_api:documenttype-detail'}, 'url': {'view_name': 'rest_api:document-detail'} } fields = ( - 'date_added', 'description', 'document_type', - 'document_type_label', 'id', 'label', 'language', - 'latest_version', 'url', 'uuid', 'versions', + 'date_added', 'description', 'document_type', 'id', 'label', + 'language', 'latest_version', 'url', 'uuid', 'versions_url', + ) + model = Document + read_only_fields = ('document_type',) + + +class WritableDocumentSerializer(serializers.ModelSerializer): + document_type = DocumentTypeSerializer(read_only=True) + latest_version = DocumentVersionSerializer(many=False, read_only=True) + versions = serializers.HyperlinkedIdentityField( + view_name='rest_api:document-version-list', + ) + url = serializers.HyperlinkedIdentityField( + view_name='rest_api:document-detail', + ) + + class Meta: + fields = ( + 'date_added', 'description', 'document_type', 'id', 'label', + 'language', 'latest_version', 'url', 'uuid', 'versions', ) model = Document read_only_fields = ('document_type',) diff --git a/mayan/apps/documents/tests/literals.py b/mayan/apps/documents/tests/literals.py index 36f860848f..6cf82e4c24 100644 --- a/mayan/apps/documents/tests/literals.py +++ b/mayan/apps/documents/tests/literals.py @@ -75,3 +75,4 @@ TEST_SMALL_DOCUMENT_PATH = os.path.join( settings.BASE_DIR, 'apps', 'documents', 'tests', 'contrib', 'sample_documents', TEST_SMALL_DOCUMENT_FILENAME ) +TEST_VERSION_COMMENT = 'test version comment' diff --git a/mayan/apps/documents/tests/test_api.py b/mayan/apps/documents/tests/test_api.py index 9abb7c561b..95fd104978 100644 --- a/mayan/apps/documents/tests/test_api.py +++ b/mayan/apps/documents/tests/test_api.py @@ -9,11 +9,12 @@ from json import loads from django.contrib.auth import get_user_model from django.core.urlresolvers import reverse from django.test import override_settings +from django.utils.encoding import force_text from django_downloadview import assert_download_response from rest_framework import status -from rest_framework.test import APITestCase +from rest_api.tests import BaseAPITestCase from user_management.tests.literals import ( TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME ) @@ -27,12 +28,9 @@ from .literals import ( from ..models import Document, DocumentType -class DocumentTypeAPITestCase(APITestCase): - """ - Test the document type API endpoints - """ - +class DocumentTypeAPITestCase(BaseAPITestCase): def setUp(self): + super(DocumentTypeAPITestCase, self).setUp() self.admin_user = get_user_model().objects.create_superuser( username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD @@ -44,16 +42,18 @@ class DocumentTypeAPITestCase(APITestCase): def tearDown(self): self.admin_user.delete() + super(DocumentTypeAPITestCase, self).tearDown() def test_document_type_create(self): self.assertEqual(DocumentType.objects.all().count(), 0) - self.client.post( + response = self.client.post( reverse('rest_api:documenttype-list'), data={ 'label': TEST_DOCUMENT_TYPE } ) + self.assertEqual(response.status_code, 201) self.assertEqual(DocumentType.objects.all().count(), 1) self.assertEqual( DocumentType.objects.all().first().label, TEST_DOCUMENT_TYPE @@ -92,12 +92,9 @@ class DocumentTypeAPITestCase(APITestCase): @override_settings(OCR_AUTO_OCR=False) -class DocumentAPITestCase(APITestCase): - """ - Test document API endpoints - """ - +class DocumentAPITestCase(BaseAPITestCase): def setUp(self): + super(DocumentAPITestCase, self).setUp() self.admin_user = get_user_model().objects.create_superuser( username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD @@ -114,6 +111,7 @@ class DocumentAPITestCase(APITestCase): def tearDown(self): self.admin_user.delete() self.document_type.delete() + super(DocumentAPITestCase, self).tearDown() def _upload_document(self): with open(TEST_SMALL_DOCUMENT_PATH) as file_object: @@ -155,51 +153,6 @@ class DocumentAPITestCase(APITestCase): ) self.assertEqual(document.page_count, 47) - def test_document_move_to_trash(self): - with open(TEST_SMALL_DOCUMENT_PATH) as file_object: - document = self.document_type.new_document( - file_object=file_object, - ) - - self.client.delete( - reverse('rest_api:document-detail', args=(document.pk,)) - ) - - self.assertEqual(Document.objects.count(), 0) - self.assertEqual(Document.trash.count(), 1) - - def test_deleted_document_delete_from_trash(self): - with open(TEST_SMALL_DOCUMENT_PATH) as file_object: - document = self.document_type.new_document( - file_object=file_object, - ) - - document.delete() - - self.assertEqual(Document.objects.count(), 0) - self.assertEqual(Document.trash.count(), 1) - - self.client.delete( - reverse('rest_api:trasheddocument-detail', args=(document.pk,)) - ) - - self.assertEqual(Document.trash.count(), 0) - - def test_deleted_document_restore(self): - with open(TEST_SMALL_DOCUMENT_PATH) as file_object: - document = self.document_type.new_document( - file_object=file_object, - ) - - document.delete() - - self.client.post( - reverse('rest_api:trasheddocument-restore', args=(document.pk,)) - ) - - self.assertEqual(Document.trash.count(), 0) - self.assertEqual(Document.objects.count(), 1) - def test_document_new_version_upload(self): with open(TEST_SMALL_DOCUMENT_PATH) as file_object: document = self.document_type.new_document( @@ -247,17 +200,44 @@ class DocumentAPITestCase(APITestCase): self.assertEqual(document.versions.count(), 2) - document_version = document.versions.first() + last_version = document.versions.last() - self.client.post( + self.client.delete( reverse( - 'rest_api:documentversion-revert', args=(document_version.pk,) + 'rest_api:documentversion-detail', + args=(document.pk, last_version.pk,) ) ) self.assertEqual(document.versions.count(), 1) - self.assertEqual(document_version, document.latest_version) + self.assertEqual(document.versions.first(), document.latest_version) + + def test_document_version_list(self): + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + document = self.document_type.new_document( + file_object=file_object, + ) + + # Needed by MySQL as milliseconds value is not store in timestamp field + time.sleep(1) + + with open(TEST_DOCUMENT_PATH) as file_object: + document.new_version(file_object=file_object) + + self.assertEqual(document.versions.count(), 2) + + last_version = document.versions.last() + + response = self.client.get( + reverse( + 'rest_api:document-version-list', + args=(document.pk,) + ) + ) + self.assertEqual( + response.data['results'][1]['checksum'], last_version.checksum + ) def test_document_download(self): with open(TEST_SMALL_DOCUMENT_PATH) as file_object: @@ -288,7 +268,7 @@ class DocumentAPITestCase(APITestCase): response = self.client.get( reverse( 'rest_api:documentversion-download', - args=(latest_version.pk,) + args=(document.pk, latest_version.pk,) ) ) @@ -306,7 +286,7 @@ class DocumentAPITestCase(APITestCase): response = self.client.patch( reverse( 'rest_api:documentversion-detail', - args=(self.document.latest_version.pk,) + args=(self.document.pk, self.document.latest_version.pk,) ), data={'comment': TEST_DOCUMENT_VERSION_COMMENT_EDITED} ) @@ -323,7 +303,7 @@ class DocumentAPITestCase(APITestCase): response = self.client.put( reverse( 'rest_api:documentversion-detail', - args=(self.document.latest_version.pk,) + args=(self.document.pk, self.document.latest_version.pk,) ), data={'comment': TEST_DOCUMENT_VERSION_COMMENT_EDITED} ) @@ -359,7 +339,6 @@ class DocumentAPITestCase(APITestCase): args=(self.document.pk,) ), data={'description': TEST_DOCUMENT_DESCRIPTION_EDITED} ) - self.assertEqual(response.status_code, 200) self.document.refresh_from_db() self.assertEqual( @@ -367,5 +346,90 @@ class DocumentAPITestCase(APITestCase): TEST_DOCUMENT_DESCRIPTION_EDITED ) + +@override_settings(OCR_AUTO_OCR=False) +class TrashedDocumentAPITestCase(BaseAPITestCase): + def setUp(self): + super(TrashedDocumentAPITestCase, self).setUp() + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + def tearDown(self): + self.admin_user.delete() + self.document_type.delete() + super(TrashedDocumentAPITestCase, self).tearDown() + + def _upload_document(self): + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + document = self.document_type.new_document( + file_object=file_object, + ) + + return document + + def test_document_move_to_trash(self): + document = self._upload_document() + + self.client.delete( + reverse('rest_api:document-detail', args=(document.pk,)) + ) + + self.assertEqual(Document.objects.count(), 0) + self.assertEqual(Document.trash.count(), 1) + + def test_trashed_document_delete_from_trash(self): + document = self._upload_document() + document.delete() + + self.assertEqual(Document.objects.count(), 0) + self.assertEqual(Document.trash.count(), 1) + + self.client.delete( + reverse('rest_api:trasheddocument-detail', args=(document.pk,)) + ) + + self.assertEqual(Document.trash.count(), 0) + + def test_trashed_document_detail_view(self): + document = self._upload_document() + document.delete() + + response = self.client.get( + reverse('rest_api:trasheddocument-detail', args=(document.pk,)) + ) + + self.assertEqual(response.data['uuid'], force_text(document.uuid)) + + def test_trashed_document_list_view(self): + document = self._upload_document() + document.delete() + + response = self.client.get( + reverse('rest_api:trasheddocument-list') + ) + + self.assertEqual(response.data['results'][0]['uuid'], force_text(document.uuid)) + + def test_trashed_document_restore(self): + document = self._upload_document() + document.delete() + + self.client.post( + reverse('rest_api:trasheddocument-restore', args=(document.pk,)) + ) + + self.assertEqual(Document.trash.count(), 0) + self.assertEqual(Document.objects.count(), 1) + # TODO: def test_document_set_document_type(self): # pass diff --git a/mayan/apps/documents/tests/test_views.py b/mayan/apps/documents/tests/test_views.py index 98c47c47d5..588b630f69 100644 --- a/mayan/apps/documents/tests/test_views.py +++ b/mayan/apps/documents/tests/test_views.py @@ -20,12 +20,14 @@ from ..permissions import ( permission_document_trash, permission_document_type_create, permission_document_type_delete, permission_document_type_edit, permission_document_type_view, permission_document_version_revert, - permission_document_view, permission_empty_trash + permission_document_view, permission_empty_trash, + permission_document_version_view ) from .literals import ( TEST_DOCUMENT_TYPE, TEST_DOCUMENT_TYPE_QUICK_LABEL, - TEST_SMALL_DOCUMENT_FILENAME, TEST_SMALL_DOCUMENT_PATH + TEST_SMALL_DOCUMENT_FILENAME, TEST_SMALL_DOCUMENT_PATH, + TEST_VERSION_COMMENT ) @@ -84,7 +86,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase): def test_document_list_view_with_permissions(self): self.grant(permission=permission_document_view) response = self.get('documents:document_list') - self.assertContains(response, 'Total: 1', status_code=200) + self.assertContains(response, self.document.label, status_code=200) def _edit_document_type(self, document_type): return self.post( @@ -432,39 +434,6 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase): self.assertEqual(DeletedDocument.objects.count(), 0) self.assertEqual(Document.objects.count(), 0) - def test_document_version_revert_no_permission(self): - first_version = self.document.latest_version - - with open(TEST_SMALL_DOCUMENT_PATH) as file_object: - self.document.new_version( - file_object=file_object - ) - - response = self.post( - 'documents:document_version_revert', args=(first_version.pk,) - ) - - self.assertEqual(response.status_code, 403) - self.assertEqual(self.document.versions.count(), 2) - - def test_document_version_revert_with_permission(self): - first_version = self.document.latest_version - - with open(TEST_SMALL_DOCUMENT_PATH) as file_object: - self.document.new_version( - file_object=file_object - ) - - self.grant(permission=permission_document_version_revert) - - response = self.post( - 'documents:document_version_revert', args=(first_version.pk,), - follow=True - ) - - self.assertContains(response, 'reverted', status_code=200) - self.assertEqual(self.document.versions.count(), 1) - def test_document_page_view_no_permissions(self): response = self.get( 'documents:document_page_view', args=( @@ -644,6 +613,73 @@ class DocumentTypeViewsTestCase(GenericDocumentViewTestCase): self.assertEqual(self.document_type.filenames.count(), 1) +class DocumentVersionTestCase(GenericDocumentViewTestCase): + def setUp(self): + super(DocumentVersionTestCase, self).setUp() + self.login_user() + + def test_document_version_list_no_permission(self): + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document.new_version( + comment=TEST_VERSION_COMMENT, file_object=file_object + ) + + response = self.get( + 'documents:document_version_list', args=(self.document.pk,) + ) + + self.assertEqual(response.status_code, 403) + + def test_document_version_list_with_permission(self): + self.grant(permission=permission_document_version_view) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document.new_version( + comment=TEST_VERSION_COMMENT, file_object=file_object + ) + + response = self.get( + 'documents:document_version_list', args=(self.document.pk,) + ) + + self.assertContains(response, TEST_VERSION_COMMENT, status_code=200) + + def test_document_version_revert_no_permission(self): + first_version = self.document.latest_version + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document.new_version( + file_object=file_object + ) + + response = self.post( + 'documents:document_version_revert', args=(first_version.pk,) + ) + + self.assertEqual(response.status_code, 403) + self.assertEqual(self.document.versions.count(), 2) + + def test_document_version_revert_with_permission(self): + first_version = self.document.latest_version + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document.new_version( + file_object=file_object + ) + + self.grant(permission=permission_document_version_revert) + + response = self.post( + 'documents:document_version_revert', args=(first_version.pk,), + follow=True + ) + + self.assertContains(response, 'reverted', status_code=200) + self.assertEqual(self.document.versions.count(), 1) + + + + class DeletedDocumentTestCase(GenericDocumentViewTestCase): def setUp(self): super(DeletedDocumentTestCase, self).setUp() diff --git a/mayan/apps/documents/urls.py b/mayan/apps/documents/urls.py index 39f1cd4ba2..c81fb12461 100644 --- a/mayan/apps/documents/urls.py +++ b/mayan/apps/documents/urls.py @@ -9,7 +9,7 @@ from .api_views import ( APIDocumentPageImageView, APIDocumentPageView, APIDocumentTypeDocumentListView, APIDocumentTypeListView, APIDocumentTypeView, APIDocumentVersionsListView, - APIDocumentVersionRevertView, APIDocumentVersionView, + APIDocumentVersionPageListView, APIDocumentVersionView, APIRecentDocumentListView ) from .views import ( @@ -258,18 +258,6 @@ urlpatterns = [ ] api_urls = [ - url( - r'^trashed_documents/$', APIDeletedDocumentListView.as_view(), - name='trasheddocument-list' - ), - url( - r'^trashed_documents/(?P[0-9]+)/$', - APIDeletedDocumentView.as_view(), name='trasheddocument-detail' - ), - url( - r'^trashed_documents/(?P[0-9]+)/restore/$', - APIDeletedDocumentRestoreView.as_view(), name='trasheddocument-restore' - ), url(r'^documents/$', APIDocumentListView.as_view(), name='document-list'), url( r'^documents/recent/$', APIRecentDocumentListView.as_view(), @@ -279,32 +267,33 @@ api_urls = [ r'^documents/(?P[0-9]+)/$', APIDocumentView.as_view(), name='document-detail' ), - url( - r'^documents/(?P[0-9]+)/versions/$', - APIDocumentVersionsListView.as_view(), name='document-version-list' - ), url( r'^documents/(?P[0-9]+)/download/$', APIDocumentDownloadView.as_view(), name='document-download' ), url( - r'^document_version/(?P[0-9]+)/$', + r'^documents/(?P[0-9]+)/versions/$', + APIDocumentVersionsListView.as_view(), name='document-version-list' + ), + url( + r'^documents/(?P[0-9]+)/versions/(?P[0-9]+)/$', APIDocumentVersionView.as_view(), name='documentversion-detail' ), url( - r'^document_version/(?P[0-9]+)/revert/$', - APIDocumentVersionRevertView.as_view(), name='documentversion-revert' + r'^documents/(?P[0-9]+)/versions/(?P[0-9]+)/pages/$', + APIDocumentVersionPageListView.as_view(), name='documentversion-page-list' ), url( - r'^document_version/(?P[0-9]+)/download/$', - APIDocumentVersionDownloadView.as_view(), name='documentversion-download' + r'^documents/(?P[0-9]+)/versions/(?P[0-9]+)/download/$', + APIDocumentVersionDownloadView.as_view(), + name='documentversion-download' ), url( - r'^document_page/(?P[0-9]+)/$', APIDocumentPageView.as_view(), - name='documentpage-detail' + r'^documents/(?P[0-9]+)/versions/(?P[0-9]+)/pages/(?P[0-9]+)$', + APIDocumentPageView.as_view(), name='documentpage-detail' ), url( - r'^document_page/(?P[0-9]+)/image/$', + r'^documents/(?P[0-9]+)/versions/(?P[0-9]+)/pages/(?P[0-9]+)/image/$', APIDocumentPageImageView.as_view(), name='documentpage-image' ), url( @@ -320,4 +309,16 @@ api_urls = [ r'^document_types/$', APIDocumentTypeListView.as_view(), name='documenttype-list' ), + url( + r'^trashed_documents/$', APIDeletedDocumentListView.as_view(), + name='trasheddocument-list' + ), + url( + r'^trashed_documents/(?P[0-9]+)/$', + APIDeletedDocumentView.as_view(), name='trasheddocument-detail' + ), + url( + r'^trashed_documents/(?P[0-9]+)/restore/$', + APIDeletedDocumentRestoreView.as_view(), name='trasheddocument-restore' + ), ] diff --git a/mayan/apps/documents/views/document_version_views.py b/mayan/apps/documents/views/document_version_views.py index 47f41cc42d..2faefe9ae5 100644 --- a/mayan/apps/documents/views/document_version_views.py +++ b/mayan/apps/documents/views/document_version_views.py @@ -12,7 +12,7 @@ from common.generics import ConfirmView, SingleObjectListView from ..models import Document, DocumentVersion from ..permissions import ( permission_document_download, permission_document_version_revert, - permission_document_view + permission_document_version_view, permission_document_view ) from .document_views import DocumentDownloadFormView, DocumentDownloadView @@ -23,7 +23,7 @@ logger = logging.getLogger(__name__) class DocumentVersionListView(SingleObjectListView): def dispatch(self, request, *args, **kwargs): AccessControlList.objects.check_access( - permissions=permission_document_view, user=request.user, + permissions=permission_document_version_view, user=request.user, obj=self.get_document() ) diff --git a/mayan/apps/documents/widgets.py b/mayan/apps/documents/widgets.py index 31a9dd0eef..2bd1b0e7bc 100644 --- a/mayan/apps/documents/widgets.py +++ b/mayan/apps/documents/widgets.py @@ -101,9 +101,21 @@ class InstanceImageWidget(object): # Click view def get_click_view_kwargs(self, instance): - return { - 'pk': instance.pk - } + """ + Determine if the view is a template or API view and vary the view + keyword arguments + """ + + if self.click_view_name.startswith('rest_api'): + return { + 'pk': instance.document.pk, + 'version_pk': instance.document_version.pk, + 'page_pk': instance.pk + } + else: + return { + 'pk': instance.pk, + } def get_click_view_query_dict(self, instance): return self.click_view_query_dict @@ -141,7 +153,9 @@ class InstanceImageWidget(object): # Preview view def get_preview_view_kwargs(self, instance): return { - 'pk': instance.pk + 'pk': instance.document.pk, + 'version_pk': instance.document_version.pk, + 'page_pk': instance.pk } def get_preview_view_query_dict(self, instance): @@ -255,12 +269,16 @@ class CarouselDocumentPageThumbnailWidget(BaseDocumentThumbnailWidget): class DocumentThumbnailWidget(BaseDocumentThumbnailWidget): def get_click_view_kwargs(self, instance): return { - 'pk': instance.latest_version.pages.first().pk + 'pk': instance.pk, + 'version_pk': instance.latest_version.pk, + 'page_pk': instance.latest_version.pages.first().pk } def get_preview_view_kwargs(self, instance): return { - 'pk': instance.latest_version.pages.first().pk + 'pk': instance.pk, + 'version_pk': instance.latest_version.pk, + 'page_pk': instance.latest_version.pages.first().pk } def get_title(self, instance): diff --git a/mayan/apps/dynamic_search/apps.py b/mayan/apps/dynamic_search/apps.py index 4a3fc58685..44f2495171 100644 --- a/mayan/apps/dynamic_search/apps.py +++ b/mayan/apps/dynamic_search/apps.py @@ -11,8 +11,8 @@ from .links import link_search, link_search_advanced, link_search_again class DynamicSearchApp(MayanAppConfig): app_namespace = 'search' app_url = 'search' + has_tests = True name = 'dynamic_search' - test = True verbose_name = _('Dynamic search') def ready(self): diff --git a/mayan/apps/dynamic_search/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/ar/LC_MESSAGES/django.mo index f7441269ba..9eba27e951 100644 Binary files a/mayan/apps/dynamic_search/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/ar/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/ar/LC_MESSAGES/django.po index cdb266ecdf..65aa50579a 100644 --- a/mayan/apps/dynamic_search/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/ar/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -23,62 +23,67 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "مصطلحات البحث" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "البحث" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "" -#: models.py:24 -msgid "User" -msgstr "مستخدم" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "" - -#: models.py:75 -msgid "Recent searches" -msgstr "" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "أقصى عدد لجلب وعرض نتائج البحث." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "الحد الأقصى لعدد طلبات البحث ليتم تذكرها لكل مستخدم." - -#: views.py:25 -msgid "Search results" -msgstr "نتائج البحث" - -#: views.py:32 -msgid "Type" +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" msgstr "" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" + +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." + #~ msgid "Results" #~ msgstr "results" @@ -113,6 +118,3 @@ msgstr "" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/bg/LC_MESSAGES/django.mo index 1867534291..e35f4cf51e 100644 Binary files a/mayan/apps/dynamic_search/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/bg/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/bg/LC_MESSAGES/django.po index 5e21019253..794a7fd512 100644 --- a/mayan/apps/dynamic_search/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/bg/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -23,62 +23,67 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "Термини на търсене" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Търсене" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "" -#: models.py:24 -msgid "User" -msgstr "Потребител" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "" - -#: models.py:75 -msgid "Recent searches" -msgstr "" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "Максимален брой резултати от търсене за показване." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Максимален брой заявки за търсене на потребител" - -#: views.py:25 -msgid "Search results" -msgstr "Резултати от търсенето" - -#: views.py:32 -msgid "Type" +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" msgstr "" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" + +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." + #~ msgid "Results" #~ msgstr "results" @@ -113,6 +118,3 @@ msgstr "" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/bs_BA/LC_MESSAGES/django.mo index 41865c3849..bf6f0eacfc 100644 Binary files a/mayan/apps/dynamic_search/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/bs_BA/LC_MESSAGES/django.po index e413cc0158..dc074e2922 100644 --- a/mayan/apps/dynamic_search/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/bs_BA/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -23,62 +23,67 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "Pojmovi pretrage" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Pretraga" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "" -#: models.py:24 -msgid "User" -msgstr "Korisnik" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "" - -#: models.py:75 -msgid "Recent searches" -msgstr "" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "Maksimalni broj pretražnih hitova da se rezultati prikažu." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Maksimalni broj po korisniku upita u pretrazi koji će biti zapamćeni." - -#: views.py:25 -msgid "Search results" -msgstr "Rezultati pretrage" - -#: views.py:32 -msgid "Type" +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" msgstr "" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" + +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." + #~ msgid "Results" #~ msgstr "results" @@ -113,6 +118,3 @@ msgstr "" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/da/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/da/LC_MESSAGES/django.mo index 14864216a3..c616db04ec 100644 Binary files a/mayan/apps/dynamic_search/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/da/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/da/LC_MESSAGES/django.po index 615dbb0ab5..45de2d7784 100644 --- a/mayan/apps/dynamic_search/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/da/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2015-08-20 19:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -22,61 +22,66 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "" -#: models.py:24 -msgid "User" -msgstr "Bruger" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "" - -#: models.py:75 -msgid "Recent searches" -msgstr "" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "" -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" msgstr "" -#: views.py:25 -msgid "Search results" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" msgstr "" -#: views.py:32 -msgid "Type" -msgstr "" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -112,6 +117,3 @@ msgstr "" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/de_DE/LC_MESSAGES/django.mo index 04eb54cd7b..34dada0768 100644 Binary files a/mayan/apps/dynamic_search/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/de_DE/LC_MESSAGES/django.po index 85563090fa..bc49529a21 100644 --- a/mayan/apps/dynamic_search/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/de_DE/LC_MESSAGES/django.po @@ -4,6 +4,7 @@ # # Translators: # Translators: +# Jesaja Everling , 2017 # Mathias Behrle , 2014 # tetjarediske , 2012 # Tobias Paepke , 2014 @@ -11,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" -"Last-Translator: Mathias Behrle \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-24 22:45+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,61 +26,66 @@ msgstr "" msgid "Dynamic search" msgstr "Dynamische Suche" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "Kein passendes Such-Model gefunden" + +#: forms.py:9 +msgid "Match all" +msgstr "Alle Felder" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "Wenn aktiviert, werden nur Ergebnisse angezeigt bei denen alle Felder zutreffen. Ohne diese Option werden Ergebnisse mit mindestens einem Feld angezeigt." + +#: forms.py:29 msgid "Search terms" msgstr "Suchbegriffe" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Suche" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "Erweiterte Suche" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "Suche wiederholen" -#: models.py:24 -msgid "User" -msgstr "Benutzer" - -#: models.py:26 -msgid "Query" -msgstr "Abfrage" - -#: models.py:28 -msgid "Datetime created" -msgstr "Erstellungszeitpunkt" - -#: models.py:30 -msgid "Hits" -msgstr "Treffer" - -#: models.py:74 -msgid "Recent search" -msgstr "Letzte Suche" - -#: models.py:75 -msgid "Recent searches" -msgstr "Letzte Suchen" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "Maximale Anzahl an Treffern, die angezeigt werden soll" -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Maximale Anzahl an Suchabfragen, die pro Benutzer gespeichert werden sollen" +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" +msgstr "Suchergebnisse für: %s" -#: views.py:25 -msgid "Search results" -msgstr "Suchergebnisse" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "Suche nach: %s" -#: views.py:32 -msgid "Type" -msgstr "Typ" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -115,6 +121,3 @@ msgstr "Typ" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/en/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/en/LC_MESSAGES/django.mo index 02525e9a90..fc7581806e 100644 Binary files a/mayan/apps/dynamic_search/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/en/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/en/LC_MESSAGES/django.po index e0bf116c3c..886a79b5ed 100644 --- a/mayan/apps/dynamic_search/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2012-12-12 06:05+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -23,67 +23,72 @@ msgstr "" msgid "Dynamic search" msgstr "advanced search" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "Search terms" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Search" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 #, fuzzy msgid "Advanced search" msgstr "advanced search" -#: links.py:11 +#: links.py:15 #, fuzzy msgid "Search again" msgstr "search again" -#: models.py:24 -msgid "User" -msgstr "" - -#: models.py:26 -#, fuzzy -msgid "Query" -msgstr "query" - -#: models.py:28 -#, fuzzy -msgid "Datetime created" -msgstr "datetime created" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -#, fuzzy -msgid "Recent search" -msgstr "recent search" - -#: models.py:75 -#, fuzzy -msgid "Recent searches" -msgstr "recent searches" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "Maximum amount search hits to fetch and display." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Maximum number of search queries to remember per user." - -#: views.py:25 -msgid "Search results" +#: views.py:24 +#, fuzzy, python-format +#| msgid "Search results" +msgid "Search results for: %s" msgstr "Search results" -#: views.py:32 -msgid "Type" -msgstr "" +#: views.py:64 +#, fuzzy, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "Search error: %s" + +#, fuzzy +#~ msgid "Query" +#~ msgstr "query" + +#, fuzzy +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#, fuzzy +#~ msgid "Recent search" +#~ msgstr "recent search" + +#, fuzzy +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #, fuzzy #~ msgid "Results" @@ -123,6 +128,3 @@ msgstr "" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/es/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/es/LC_MESSAGES/django.mo index 71a6b1a99d..b9b3ca66c2 100644 Binary files a/mayan/apps/dynamic_search/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/es/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/es/LC_MESSAGES/django.po index 06c3519e43..e8f3c835bb 100644 --- a/mayan/apps/dynamic_search/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/es/LC_MESSAGES/django.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -26,61 +26,66 @@ msgstr "" msgid "Dynamic search" msgstr "Búsqueda dinámica " -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "Términos de búsqueda" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Búsqueda" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "Búsqueda avanzada" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "Volver a buscar" -#: models.py:24 -msgid "User" -msgstr "Usuario" - -#: models.py:26 -msgid "Query" -msgstr "Consulta" - -#: models.py:28 -msgid "Datetime created" -msgstr "fecha y hora creados" - -#: models.py:30 -msgid "Hits" -msgstr "accesos" - -#: models.py:74 -msgid "Recent search" -msgstr "Búsqueda reciente" - -#: models.py:75 -msgid "Recent searches" -msgstr "Búsquedas recientes." - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "La cantidad máxima de resultados de búsqueda a recabar y mostrar." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "El número máximo de consultas de búsqueda para recordar por usuario." +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" +msgstr "" -#: views.py:25 -msgid "Search results" -msgstr "Resultados de la búsqueda" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" -#: views.py:32 -msgid "Type" -msgstr "Tipo" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -116,6 +121,3 @@ msgstr "Tipo" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/fa/LC_MESSAGES/django.mo index ca67602f60..0d6758a541 100644 Binary files a/mayan/apps/dynamic_search/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/fa/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/fa/LC_MESSAGES/django.po index 2d1008cca1..9ae2cca9c5 100644 --- a/mayan/apps/dynamic_search/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/fa/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -23,61 +23,66 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "عبارات جستجو" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "جستجو" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "جستجوی پیشرفته" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "جستجوی دوباره" -#: models.py:24 -msgid "User" -msgstr "کاربر" - -#: models.py:26 -msgid "Query" -msgstr "پرس و جو" - -#: models.py:28 -msgid "Datetime created" -msgstr "تاریخ زمان ایجاد" - -#: models.py:30 -msgid "Hits" -msgstr "برخورد" - -#: models.py:74 -msgid "Recent search" -msgstr "جستجوی اخیر" - -#: models.py:75 -msgid "Recent searches" -msgstr "جستجوهای اخیر" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "جداکثر نتایج قابل نمایش" -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "حداکثر تعداد پرس و جو های هرکاربر که بوسیله سیستم نگهداری میشود." +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" +msgstr "" -#: views.py:25 -msgid "Search results" -msgstr "نتایج جستجو" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" -#: views.py:32 -msgid "Type" -msgstr "نوع" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -113,6 +118,3 @@ msgstr "نوع" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/fr/LC_MESSAGES/django.mo index 48d5db55ae..6425690899 100644 Binary files a/mayan/apps/dynamic_search/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/fr/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/fr/LC_MESSAGES/django.po index 5f7d8ea9c9..9cc579edab 100644 --- a/mayan/apps/dynamic_search/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/fr/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" -"Last-Translator: Christophe CHAUVET \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,61 +25,66 @@ msgstr "" msgid "Dynamic search" msgstr "Recherche dynamique" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "Termes de recherche" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Recherche" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "Recherche avancée" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "Rechercher à nouveau" -#: models.py:24 -msgid "User" -msgstr "Utilisateur" - -#: models.py:26 -msgid "Query" -msgstr "Requête" - -#: models.py:28 -msgid "Datetime created" -msgstr "Date et heure de création" - -#: models.py:30 -msgid "Hits" -msgstr "Nombre de vues" - -#: models.py:74 -msgid "Recent search" -msgstr "Recherche récente" - -#: models.py:75 -msgid "Recent searches" -msgstr "Recherches récentes" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "Nombre maximum de résultats de recherche à traiter et afficher." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Nombre maximal de recherches à mémoriser par utilisateur" +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" +msgstr "" -#: views.py:25 -msgid "Search results" -msgstr "Résultats de la recherche" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" -#: views.py:32 -msgid "Type" -msgstr "Type" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -115,6 +120,3 @@ msgstr "Type" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/hu/LC_MESSAGES/django.mo index 3c0ca9262a..8a363af86e 100644 Binary files a/mayan/apps/dynamic_search/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/hu/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/hu/LC_MESSAGES/django.po index 40a344f0eb..e912d072e0 100644 --- a/mayan/apps/dynamic_search/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/hu/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -23,62 +23,67 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "keresési feltételek" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Keresés" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "" -#: models.py:24 -msgid "User" -msgstr "Felhasználó" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "" - -#: models.py:75 -msgid "Recent searches" -msgstr "" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "A letölthető és megjeleníthető keresési találatok maximális száma." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "A keresési előzmények maximális száma felhasználónként." - -#: views.py:25 -msgid "Search results" -msgstr "A keresés eredményei" - -#: views.py:32 -msgid "Type" +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" msgstr "" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" + +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." + #~ msgid "Results" #~ msgstr "results" @@ -113,6 +118,3 @@ msgstr "" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/id/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/id/LC_MESSAGES/django.mo index a679fe5e4b..ffa0196af0 100644 Binary files a/mayan/apps/dynamic_search/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/id/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/id/LC_MESSAGES/django.po index 0a3a985b77..56c069f78e 100644 --- a/mayan/apps/dynamic_search/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2015-08-20 19:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -22,61 +22,66 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "" -#: models.py:24 -msgid "User" -msgstr "Pengguna" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "" - -#: models.py:75 -msgid "Recent searches" -msgstr "" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "" -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" msgstr "" -#: views.py:25 -msgid "Search results" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" msgstr "" -#: views.py:32 -msgid "Type" -msgstr "" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -112,6 +117,3 @@ msgstr "" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/it/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/it/LC_MESSAGES/django.mo index 7192986575..2ae8e27a38 100644 Binary files a/mayan/apps/dynamic_search/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/it/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/it/LC_MESSAGES/django.po index 2b7025be3d..edb7d82efc 100644 --- a/mayan/apps/dynamic_search/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/it/LC_MESSAGES/django.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-09-24 09:51+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,61 +26,66 @@ msgstr "" msgid "Dynamic search" msgstr "Ricerca dinamica" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "Cerca termini " -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Cerca" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "Ricerca avanzata" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "Cerca ancora" -#: models.py:24 -msgid "User" -msgstr "Utente" - -#: models.py:26 -msgid "Query" -msgstr "Interrogazione" - -#: models.py:28 -msgid "Datetime created" -msgstr "Data e ora di creazione" - -#: models.py:30 -msgid "Hits" -msgstr "Risultati" - -#: models.py:74 -msgid "Recent search" -msgstr "Ricerca recente" - -#: models.py:75 -msgid "Recent searches" -msgstr "Ricerche recenti" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "Massimo numero ricerca risultati da recuperare e visualizzare. " -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Numero massimo di query di ricerca da ricordare per utente." +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" +msgstr "" -#: views.py:25 -msgid "Search results" -msgstr "Risultati della ricerca" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" -#: views.py:32 -msgid "Type" -msgstr "Tipo" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -116,6 +121,3 @@ msgstr "Tipo" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/nl_NL/LC_MESSAGES/django.mo index 3a0ac8dea5..f9e56e8d19 100644 Binary files a/mayan/apps/dynamic_search/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/nl_NL/LC_MESSAGES/django.po index 3c4f4a3bcc..dd710c53ed 100644 --- a/mayan/apps/dynamic_search/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/nl_NL/LC_MESSAGES/django.po @@ -5,14 +5,15 @@ # Translators: # Translators: # Evelijn Saaltink , 2016 +# Johan Braeken, 2017 # Lucas Weel , 2013 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-11-09 15:49+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,61 +25,66 @@ msgstr "" msgid "Dynamic search" msgstr "Dynamisch zoeken" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "Zoektermen" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Zoek" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "Geavanceerd zoeken" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "Zoek nog een keer" -#: models.py:24 -msgid "User" -msgstr "Gebruiker" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "Datumtijd aangemaakt" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "Recente zoekopdracht" - -#: models.py:75 -msgid "Recent searches" -msgstr "Recente zoekopdrachten" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "Het maximum aantal zoekresultaten." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Het maximum aantal zoek-opdrachten dat per gebruiker wordt opgeslagen" +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" +msgstr "" -#: views.py:25 -msgid "Search results" -msgstr "Zoekresultaten" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" -#: views.py:32 -msgid "Type" -msgstr "Type" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -114,6 +120,3 @@ msgstr "Type" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/pl/LC_MESSAGES/django.mo index 3d15ba3e62..482978cf53 100644 Binary files a/mayan/apps/dynamic_search/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/pl/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/pl/LC_MESSAGES/django.po index 5000f72507..722e5694e8 100644 --- a/mayan/apps/dynamic_search/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/pl/LC_MESSAGES/django.po @@ -12,75 +12,80 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" -"Last-Translator: Wojtek Warczakowski \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" #: apps.py:16 msgid "Dynamic search" msgstr "Dynamiczne wyszukiwanie" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "Słowa do wyszukania" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Szukaj" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "Zaawansowane wyszukiwanie" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "Wyszukać ponownie" -#: models.py:24 -msgid "User" -msgstr "Użytkownik" - -#: models.py:26 -msgid "Query" -msgstr "Zapytanie" - -#: models.py:28 -msgid "Datetime created" -msgstr "Data utworzenia" - -#: models.py:30 -msgid "Hits" -msgstr "Trafienia" - -#: models.py:74 -msgid "Recent search" -msgstr "Ostatnie wyszukiwanie" - -#: models.py:75 -msgid "Recent searches" -msgstr "Ostatnie wyszukiwania" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "Maksymalna liczba trafień do wyświetlenia na ekranie." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Maksymalna liczba wyszukań do zapamiętania na 1 użytkownika." +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" +msgstr "" -#: views.py:25 -msgid "Search results" -msgstr "Wynik wyszukiwania" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" -#: views.py:32 -msgid "Type" -msgstr "Typ" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -116,6 +121,3 @@ msgstr "Typ" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/pt/LC_MESSAGES/django.mo index 976debfc74..bf2dc4aeac 100644 Binary files a/mayan/apps/dynamic_search/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/pt/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/pt/LC_MESSAGES/django.po index de9de3e71c..4b91a85f3a 100644 --- a/mayan/apps/dynamic_search/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/pt/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -24,62 +24,67 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "Termos de pesquisa" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Pesquisa" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "Procura Avançada" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "" -#: models.py:24 -msgid "User" -msgstr "Utilizador" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "" - -#: models.py:75 -msgid "Recent searches" -msgstr "" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "Número máximo de resultados a buscar e mostrar." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Número máximo de consultas a recordar por utilizador." - -#: views.py:25 -msgid "Search results" -msgstr "Resultados da pesquisa" - -#: views.py:32 -msgid "Type" +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" msgstr "" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" + +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." + #~ msgid "Results" #~ msgstr "results" @@ -114,6 +119,3 @@ msgstr "" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/pt_BR/LC_MESSAGES/django.mo index 1a206e2250..34732de28a 100644 Binary files a/mayan/apps/dynamic_search/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/pt_BR/LC_MESSAGES/django.po index 17a50622c0..dcb06e97eb 100644 --- a/mayan/apps/dynamic_search/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/pt_BR/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-11-17 22:28+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,61 +25,66 @@ msgstr "" msgid "Dynamic search" msgstr "Busca dinâmica" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "Termos de pesquisa" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Pesquisa" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "pesquisa avançada" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "pesquisar novamente" -#: models.py:24 -msgid "User" -msgstr "Usuário" - -#: models.py:26 -msgid "Query" -msgstr "pergunta" - -#: models.py:28 -msgid "Datetime created" -msgstr "Hora e data criada" - -#: models.py:30 -msgid "Hits" -msgstr "visitas" - -#: models.py:74 -msgid "Recent search" -msgstr "pesquisa recente" - -#: models.py:75 -msgid "Recent searches" -msgstr "pesquisas recentes" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "Quantidade máxima acessos para a pesquisa buscar e mostrar." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Número máximo de consultas de pesquisa para se lembrar por usuário." +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" +msgstr "" -#: views.py:25 -msgid "Search results" -msgstr "Resultados da pesquisa" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" -#: views.py:32 -msgid "Type" -msgstr "Tipo" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -115,6 +120,3 @@ msgstr "Tipo" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/ro_RO/LC_MESSAGES/django.mo index 088aa8c54a..d1479457da 100644 Binary files a/mayan/apps/dynamic_search/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/ro_RO/LC_MESSAGES/django.po index 0ed1fba0ba..dc4a2c19cc 100644 --- a/mayan/apps/dynamic_search/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/ro_RO/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-04-17 13:16+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -23,61 +23,66 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "Caută termeni" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Căută" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "" -#: models.py:24 -msgid "User" -msgstr "utilizator" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "" - -#: models.py:75 -msgid "Recent searches" -msgstr "" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "Căutare suma maximă hit-uri pentru a prelua și afișa." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Numărul maxim de interogări de căutare per utilizator." +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" +msgstr "" -#: views.py:25 -msgid "Search results" -msgstr "Rezultatele căutării" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" -#: views.py:32 -msgid "Type" -msgstr "Tip" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -113,6 +118,3 @@ msgstr "Tip" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/ru/LC_MESSAGES/django.mo index d73434dd4c..7edace0bc1 100644 Binary files a/mayan/apps/dynamic_search/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/ru/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/ru/LC_MESSAGES/django.po index a5a53b29bd..7228745598 100644 --- a/mayan/apps/dynamic_search/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/ru/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-23 01:14+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" @@ -22,61 +22,66 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "Условия поиска" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Поиск" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "" -#: models.py:24 -msgid "User" -msgstr "Пользователь" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "" - -#: models.py:75 -msgid "Recent searches" -msgstr "" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "Максимальное количество отображаемых документов из результатов поиска." -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Максимальное количество поисковых запросов запоминаемых для каждого пользователя." +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" +msgstr "" -#: views.py:25 -msgid "Search results" -msgstr "Результаты поиска" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" -#: views.py:32 -msgid "Type" -msgstr "Тип" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -112,6 +117,3 @@ msgstr "Тип" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/sl_SI/LC_MESSAGES/django.mo index a38aad3181..a6994d9f47 100644 Binary files a/mayan/apps/dynamic_search/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/sl_SI/LC_MESSAGES/django.po index d7f1f67e7c..341a93c36f 100644 --- a/mayan/apps/dynamic_search/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2015-08-20 19:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -22,61 +22,66 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "" -#: models.py:24 -msgid "User" -msgstr "" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "" - -#: models.py:75 -msgid "Recent searches" -msgstr "" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "" -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" msgstr "" -#: views.py:25 -msgid "Search results" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" msgstr "" -#: views.py:32 -msgid "Type" -msgstr "" +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." #~ msgid "Results" #~ msgstr "results" @@ -112,6 +117,3 @@ msgstr "" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/vi_VN/LC_MESSAGES/django.mo index 39ab23e396..73cca52190 100644 Binary files a/mayan/apps/dynamic_search/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/vi_VN/LC_MESSAGES/django.po index 7737c0f1bd..38f6eec0db 100644 --- a/mayan/apps/dynamic_search/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/vi_VN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -23,62 +23,67 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "Tìm kiếm" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "" -#: models.py:24 -msgid "User" -msgstr "Người dùng" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "" - -#: models.py:75 -msgid "Recent searches" -msgstr "" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "" -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "Số truy vấn lớn nhất cần nhớ cho mỗi người dùng" - -#: views.py:25 -msgid "Search results" -msgstr "Kết quả tìm kiếm" - -#: views.py:32 -msgid "Type" +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" msgstr "" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" + +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." + #~ msgid "Results" #~ msgstr "results" @@ -113,6 +118,3 @@ msgstr "" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/dynamic_search/locale/zh_CN/LC_MESSAGES/django.mo index c375b730c5..bd777ca9dc 100644 Binary files a/mayan/apps/dynamic_search/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/dynamic_search/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/dynamic_search/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/dynamic_search/locale/zh_CN/LC_MESSAGES/django.po index 3f85dc8990..aecd44804b 100644 --- a/mayan/apps/dynamic_search/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/dynamic_search/locale/zh_CN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -23,62 +23,67 @@ msgstr "" msgid "Dynamic search" msgstr "" -#: forms.py:21 +#: classes.py:26 +msgid "No search model matching the query" +msgstr "" + +#: forms.py:9 +msgid "Match all" +msgstr "" + +#: forms.py:10 +msgid "" +"When checked, only results that match all fields will be returned. When " +"unchecked results that match at least one field will be returned." +msgstr "" + +#: forms.py:29 msgid "Search terms" msgstr "搜索项" -#: links.py:7 settings.py:8 views.py:56 views.py:70 +#: links.py:8 settings.py:8 views.py:51 views.py:62 msgid "Search" msgstr "搜索" -#: links.py:9 views.py:77 +#: links.py:11 views.py:76 msgid "Advanced search" msgstr "" -#: links.py:11 +#: links.py:15 msgid "Search again" msgstr "" -#: models.py:24 -msgid "User" -msgstr "用户" - -#: models.py:26 -msgid "Query" -msgstr "" - -#: models.py:28 -msgid "Datetime created" -msgstr "" - -#: models.py:30 -msgid "Hits" -msgstr "" - -#: models.py:74 -msgid "Recent search" -msgstr "" - -#: models.py:75 -msgid "Recent searches" -msgstr "" - -#: settings.py:14 +#: settings.py:11 msgid "Maximum amount search hits to fetch and display." msgstr "搜索的最大查询和显示数量" -#: settings.py:18 -msgid "Maximum number of search queries to remember per user." -msgstr "每一个用户所能保存的最大查询数" - -#: views.py:25 -msgid "Search results" -msgstr "搜索结果" - -#: views.py:32 -msgid "Type" +#: views.py:24 +#, python-format +#| msgid "Search results" +msgid "Search results for: %s" msgstr "" +#: views.py:64 +#, python-format +#| msgid "Search error: %s" +msgid "Search for: %s" +msgstr "" + +#~ msgid "Query" +#~ msgstr "query" + +#~ msgid "Datetime created" +#~ msgstr "datetime created" + +#~ msgid "Recent search" +#~ msgstr "recent search" + +#~ msgid "Recent searches" +#~ msgstr "recent searches" + +#~ msgid "Maximum number of search queries to remember per user." +#~ msgstr "Maximum number of search queries to remember per user." + #~ msgid "Results" #~ msgstr "results" @@ -113,6 +118,3 @@ msgstr "" #~ msgstr "" #~ "Enter the desired search keywords separated by space. Only the top " #~ "%(search_results_limit)s results will be available." - -#~ msgid "Search error: %s" -#~ msgstr "Search error: %s" diff --git a/mayan/apps/dynamic_search/tests/test_api.py b/mayan/apps/dynamic_search/tests/test_api.py index e8483a90a4..252442d847 100644 --- a/mayan/apps/dynamic_search/tests/test_api.py +++ b/mayan/apps/dynamic_search/tests/test_api.py @@ -6,23 +6,20 @@ from django.contrib.auth import get_user_model from django.core.urlresolvers import reverse from django.test import override_settings -from rest_framework.test import APITestCase - from documents.models import DocumentType from documents.search import document_search from documents.tests import TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +from rest_api.tests import BaseAPITestCase from user_management.tests import ( TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME ) @override_settings(OCR_AUTO_OCR=False) -class SearchAPITestCase(APITestCase): - """ - Test the search API endpoints - """ - +class SearchAPITestCase(BaseAPITestCase): def setUp(self): + super(SearchAPITestCase, self).setUp() + self.admin_user = get_user_model().objects.create_superuser( username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD diff --git a/mayan/apps/dynamic_search/urls.py b/mayan/apps/dynamic_search/urls.py index 1300f2fa61..ddcb1aab9a 100644 --- a/mayan/apps/dynamic_search/urls.py +++ b/mayan/apps/dynamic_search/urls.py @@ -29,7 +29,7 @@ api_urls = [ name='search-view' ), url( - r'^advanced/(?P[\.\w]+)/$', APIAdvancedSearchView.as_view(), + r'^search/advanced/(?P[\.\w]+)/$', APIAdvancedSearchView.as_view(), name='advanced-search-view' ), ] diff --git a/mayan/apps/events/api_views.py b/mayan/apps/events/api_views.py index 37c56e6054..35cc03c14c 100644 --- a/mayan/apps/events/api_views.py +++ b/mayan/apps/events/api_views.py @@ -1,7 +1,6 @@ from __future__ import absolute_import, unicode_literals from django.contrib.contenttypes.models import ContentType -from django.core.exceptions import PermissionDenied from django.http import Http404 from django.shortcuts import get_object_or_404 @@ -9,7 +8,6 @@ from actstream.models import Action, any_stream from rest_framework import generics from acls.models import AccessControlList -from permissions import Permission from rest_api.permissions import MayanPermission from .classes import Event @@ -38,18 +36,14 @@ class APIObjectEventListView(generics.ListAPIView): raise Http404 def get_queryset(self): - object = self.get_object() + obj = self.get_object() - try: - Permission.check_permissions( - self.request.user, permissions=(permission_events_view,) - ) - except PermissionDenied: - AccessControlList.objects.check_access( - permission_events_view, self.request.user, object - ) + AccessControlList.objects.check_access( + permissions=permission_events_view, user=self.request.user, + obj=obj + ) - return any_stream(object) + return any_stream(obj) class APIEventTypeListView(generics.ListAPIView): diff --git a/mayan/apps/events/apps.py b/mayan/apps/events/apps.py index 620171d205..b866d0d459 100644 --- a/mayan/apps/events/apps.py +++ b/mayan/apps/events/apps.py @@ -13,8 +13,8 @@ from .widgets import event_type_link class EventsApp(MayanAppConfig): + has_tests = True name = 'events' - test = True verbose_name = _('Events') def ready(self): diff --git a/mayan/apps/events/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/events/locale/ar/LC_MESSAGES/django.mo index 638915ddaa..e1a46d243d 100644 Binary files a/mayan/apps/events/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/ar/LC_MESSAGES/django.po b/mayan/apps/events/locale/ar/LC_MESSAGES/django.po index e17cb63370..afb4c78bcc 100644 --- a/mayan/apps/events/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/ar/LC_MESSAGES/django.po @@ -1,39 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:07+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/" +"ar/)\n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "" @@ -42,11 +44,11 @@ msgstr "" msgid "Name" msgstr "اسم" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Event type" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "" @@ -54,16 +56,16 @@ msgstr "" msgid "Access the events of an object" msgstr "" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "" diff --git a/mayan/apps/events/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/events/locale/bg/LC_MESSAGES/django.mo index 1919fbabde..6ed5ce00a0 100644 Binary files a/mayan/apps/events/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/bg/LC_MESSAGES/django.po b/mayan/apps/events/locale/bg/LC_MESSAGES/django.po index 26fa55de49..76b4adf6a4 100644 --- a/mayan/apps/events/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/bg/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:07+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" +"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "" @@ -42,11 +43,11 @@ msgstr "" msgid "Name" msgstr "Име" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Тип на събитието" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "" @@ -54,16 +55,16 @@ msgstr "" msgid "Access the events of an object" msgstr "" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "" diff --git a/mayan/apps/events/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/events/locale/bs_BA/LC_MESSAGES/django.mo index 54b4822e9c..35cef60fb0 100644 Binary files a/mayan/apps/events/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/events/locale/bs_BA/LC_MESSAGES/django.po index 6f9f8ec008..494cf6889b 100644 --- a/mayan/apps/events/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/bs_BA/LC_MESSAGES/django.po @@ -1,39 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:07+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" +"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/" +"rosarior/mayan-edms/language/bs_BA/)\n" +"Language: bs_BA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bs_BA\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" +"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" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "" @@ -42,11 +44,11 @@ msgstr "" msgid "Name" msgstr "Ime" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Tip događaja" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "" @@ -54,16 +56,16 @@ msgstr "" msgid "Access the events of an object" msgstr "" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "" diff --git a/mayan/apps/events/locale/da/LC_MESSAGES/django.mo b/mayan/apps/events/locale/da/LC_MESSAGES/django.mo index 6adf76f67b..1d8e28238e 100644 Binary files a/mayan/apps/events/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/da/LC_MESSAGES/django.po b/mayan/apps/events/locale/da/LC_MESSAGES/django.po index a3aeca4fa5..9bdd14bee7 100644 --- a/mayan/apps/events/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/da/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:07+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" +"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/" +"da/)\n" +"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "" @@ -42,11 +43,11 @@ msgstr "" msgid "Name" msgstr "Navn" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Hændelsestype" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "" @@ -54,16 +55,16 @@ msgstr "" msgid "Access the events of an object" msgstr "" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "" diff --git a/mayan/apps/events/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/events/locale/de_DE/LC_MESSAGES/django.mo index 2da539b583..6164c60fca 100644 Binary files a/mayan/apps/events/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/events/locale/de_DE/LC_MESSAGES/django.po index 6d89566f11..9b4465ea66 100644 --- a/mayan/apps/events/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/de_DE/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:02+0000\n" "Last-Translator: Mathias Behrle \n" -"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" +"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "Ereignisse" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "Zeitstempel" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "Akteur" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "Verb" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "Unbekannter oder obsoleter Ereignistyp: {0}" @@ -42,11 +43,11 @@ msgstr "Unbekannter oder obsoleter Ereignistyp: {0}" msgid "Name" msgstr "Name" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Ereignistyp" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "Ereignistypen" @@ -54,16 +55,16 @@ msgstr "Ereignistypen" msgid "Access the events of an object" msgstr "Auf Ereignisse eines Objekts zugreifen" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "Ziel" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "Ereignisse für %s" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "Ereignisse des Typs %s" diff --git a/mayan/apps/events/locale/en/LC_MESSAGES/django.mo b/mayan/apps/events/locale/en/LC_MESSAGES/django.mo index d15d45deda..2a49b9eccb 100644 Binary files a/mayan/apps/events/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/en/LC_MESSAGES/django.po b/mayan/apps/events/locale/en/LC_MESSAGES/django.po index acbdaffa05..5326d38de8 100644 --- a/mayan/apps/events/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,23 +17,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "" @@ -42,11 +42,11 @@ msgstr "" msgid "Name" msgstr "" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "" @@ -54,16 +54,16 @@ msgstr "" msgid "Access the events of an object" msgstr "" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "" diff --git a/mayan/apps/events/locale/es/LC_MESSAGES/django.mo b/mayan/apps/events/locale/es/LC_MESSAGES/django.mo index b18574b7e9..b8a54e104b 100644 Binary files a/mayan/apps/events/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/es/LC_MESSAGES/django.po b/mayan/apps/events/locale/es/LC_MESSAGES/django.po index 57148077aa..f7d595bf07 100644 --- a/mayan/apps/events/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/es/LC_MESSAGES/django.po @@ -1,40 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Roberto Rosario, 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:02+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "Eventos" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "Marca de tiempo" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "Actor" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "Verbo" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "Tipo de evento desconocido u obsoleto: {0}" @@ -43,11 +44,11 @@ msgstr "Tipo de evento desconocido u obsoleto: {0}" msgid "Name" msgstr "Nombre" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Tipo de evento" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "Tipos de eventos" @@ -55,16 +56,16 @@ msgstr "Tipos de eventos" msgid "Access the events of an object" msgstr "Acceder a los eventos de un objeto" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "Objetivo" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "Eventos para: %s" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "Eventos de tipo: %s" diff --git a/mayan/apps/events/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/events/locale/fa/LC_MESSAGES/django.mo index 1986fe5661..a6a0136238 100644 Binary files a/mayan/apps/events/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/fa/LC_MESSAGES/django.po b/mayan/apps/events/locale/fa/LC_MESSAGES/django.po index fdbecdb7c0..b971f96858 100644 --- a/mayan/apps/events/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/fa/LC_MESSAGES/django.po @@ -1,40 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Mehdi Amani , 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:02+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/" +"language/fa/)\n" +"Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "رویداد" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "علامت زمان" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "فعال" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "فعل" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "نوع رخداد ناشناخته :{0}" @@ -43,11 +44,11 @@ msgstr "نوع رخداد ناشناخته :{0}" msgid "Name" msgstr "نام" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "نوع رویداد" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "انواع رخدادها" @@ -55,16 +56,16 @@ msgstr "انواع رخدادها" msgid "Access the events of an object" msgstr "دسترسی به رخدادهای یک شی" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "هدف" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "رخدادها برای : %s" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "نوع رخداد ها: %s" diff --git a/mayan/apps/events/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/events/locale/fr/LC_MESSAGES/django.mo index 77337e1915..5454a69de1 100644 Binary files a/mayan/apps/events/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/fr/LC_MESSAGES/django.po b/mayan/apps/events/locale/fr/LC_MESSAGES/django.po index c78acee5ab..1033512d8b 100644 --- a/mayan/apps/events/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/fr/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Christophe CHAUVET , 2015 # Thierry Schott , 2016 @@ -9,33 +9,34 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:02+0000\n" "Last-Translator: Thierry Schott \n" -"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" +"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/" +"fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "Événements" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "Horodatage" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "Acteur" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "Verbe" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "Type d'évènement inconnu ou obsolète: {0}" @@ -44,11 +45,11 @@ msgstr "Type d'évènement inconnu ou obsolète: {0}" msgid "Name" msgstr "Nom" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Type d'évènement" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "Types d'évènement" @@ -56,16 +57,16 @@ msgstr "Types d'évènement" msgid "Access the events of an object" msgstr "Accéder aux évènements de cet objet" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "Cible" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "Évènements pour: %s" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "Évènements de type: %s" diff --git a/mayan/apps/events/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/events/locale/hu/LC_MESSAGES/django.mo index 57aedc7ac1..e170ecea48 100644 Binary files a/mayan/apps/events/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/hu/LC_MESSAGES/django.po b/mayan/apps/events/locale/hu/LC_MESSAGES/django.po index 4e89537548..5eb7d58a98 100644 --- a/mayan/apps/events/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/hu/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:07+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" +"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/hu/)\n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "" @@ -42,11 +43,11 @@ msgstr "" msgid "Name" msgstr "" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "" @@ -54,16 +55,16 @@ msgstr "" msgid "Access the events of an object" msgstr "" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "" diff --git a/mayan/apps/events/locale/id/LC_MESSAGES/django.mo b/mayan/apps/events/locale/id/LC_MESSAGES/django.mo index 4e637dac22..c0b49d62b6 100644 Binary files a/mayan/apps/events/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/id/LC_MESSAGES/django.po b/mayan/apps/events/locale/id/LC_MESSAGES/django.po index 0848f551e6..c69a2dc1db 100644 --- a/mayan/apps/events/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/id/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:07+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" +"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/" +"language/id/)\n" +"Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "" @@ -42,11 +43,11 @@ msgstr "" msgid "Name" msgstr "" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "" @@ -54,16 +55,16 @@ msgstr "" msgid "Access the events of an object" msgstr "" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "" diff --git a/mayan/apps/events/locale/it/LC_MESSAGES/django.mo b/mayan/apps/events/locale/it/LC_MESSAGES/django.mo index 1829b98383..1093bb32df 100644 Binary files a/mayan/apps/events/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/it/LC_MESSAGES/django.po b/mayan/apps/events/locale/it/LC_MESSAGES/django.po index f0aa989ff6..83da1f9763 100644 --- a/mayan/apps/events/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/it/LC_MESSAGES/django.po @@ -1,40 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Marco Camplese , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-09-24 09:51+0000\n" "Last-Translator: Marco Camplese \n" -"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" +"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "Eventi" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "Timestamp" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "Attore" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "Verbo" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "Tipo di evento obsoleto o sconosciuto: {0}" @@ -43,11 +44,11 @@ msgstr "Tipo di evento obsoleto o sconosciuto: {0}" msgid "Name" msgstr "Nome " -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Tipo evento" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "Tipi evento" @@ -55,16 +56,16 @@ msgstr "Tipi evento" msgid "Access the events of an object" msgstr "Accedere agli eventi di un oggetto" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "Destinazione" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "Eventi per: %s" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "Eventi di tipo: %s" diff --git a/mayan/apps/events/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/events/locale/nl_NL/LC_MESSAGES/django.mo index 5b66b50636..3364195651 100644 Binary files a/mayan/apps/events/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/events/locale/nl_NL/LC_MESSAGES/django.po index 22e933bec6..577c965b2a 100644 --- a/mayan/apps/events/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/nl_NL/LC_MESSAGES/django.po @@ -1,40 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Evelijn Saaltink , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-10-28 12:33+0000\n" "Last-Translator: Evelijn Saaltink \n" -"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-" +"edms/language/nl_NL/)\n" +"Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "Evenementen" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "Timestamp" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "Acteur" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "Werkwoord" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "Onbekende of verouderde evenementsoort: {0}" @@ -43,11 +44,11 @@ msgstr "Onbekende of verouderde evenementsoort: {0}" msgid "Name" msgstr "Naam" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Evenementsoort" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "Evenementsoorten" @@ -55,16 +56,16 @@ msgstr "Evenementsoorten" msgid "Access the events of an object" msgstr "Benader de evenementen van een object" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "Doel" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "Evenementen voor: %s" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "Evenementen van soort: %s" diff --git a/mayan/apps/events/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/events/locale/pl/LC_MESSAGES/django.mo index e9c0269e7b..c23c2e311c 100644 Binary files a/mayan/apps/events/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/pl/LC_MESSAGES/django.po b/mayan/apps/events/locale/pl/LC_MESSAGES/django.po index 0c12c03059..38e7ff4a32 100644 --- a/mayan/apps/events/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/pl/LC_MESSAGES/django.po @@ -1,40 +1,42 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Annunnaky , 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:02+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" +"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/" +"pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "Zdarzenia" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "Pieczęć czasu" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "Czynnik" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "Słowo" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "Nieznany, bądź przestarzały typ zdarzenia: {0}" @@ -43,11 +45,11 @@ msgstr "Nieznany, bądź przestarzały typ zdarzenia: {0}" msgid "Name" msgstr "Nazwa" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Typ zdarzenia" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "Typy zdarzeń" @@ -55,16 +57,16 @@ msgstr "Typy zdarzeń" msgid "Access the events of an object" msgstr "Dostęp do zdarzeń obiektu" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "Cel" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "Zdarzenia dla: %s" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "Zdarzenia typu: %s" diff --git a/mayan/apps/events/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/events/locale/pt/LC_MESSAGES/django.mo index cd38e9345c..a5145546e3 100644 Binary files a/mayan/apps/events/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/pt/LC_MESSAGES/django.po b/mayan/apps/events/locale/pt/LC_MESSAGES/django.po index fde6da4894..70576382a6 100644 --- a/mayan/apps/events/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/pt/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:07+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "Events" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "Actor" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "Verbo" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "Tipo de evento obsoleto ou desconhecido: {0}" @@ -42,11 +43,11 @@ msgstr "Tipo de evento obsoleto ou desconhecido: {0}" msgid "Name" msgstr "Nome" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Tipo de evento" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "Tipo de eventos" @@ -54,16 +55,16 @@ msgstr "Tipo de eventos" msgid "Access the events of an object" msgstr "Aceder aos eventos de um objeto" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "Destino" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "Eventos para: %s" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "Tipo de eventos: %s" diff --git a/mayan/apps/events/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/events/locale/pt_BR/LC_MESSAGES/django.mo index 4bcc7bdbf1..3bf4e3a800 100644 Binary files a/mayan/apps/events/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/events/locale/pt_BR/LC_MESSAGES/django.po index aa020a2ac5..0113a0ef69 100644 --- a/mayan/apps/events/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/pt_BR/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Roberto Rosario, 2015 # Rogerio Falcone , 2015 @@ -9,33 +9,34 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:02+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-" +"edms/language/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "Eventos" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "Timestamp" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "Ator" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "Verbo" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "Desconhecido ou obsoletos tipo de evento: {0}" @@ -44,11 +45,11 @@ msgstr "Desconhecido ou obsoletos tipo de evento: {0}" msgid "Name" msgstr "Nome" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Tipo de Evento" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "Tipos de Eventos" @@ -56,16 +57,16 @@ msgstr "Tipos de Eventos" msgid "Access the events of an object" msgstr "Acesse os eventos de um objeto" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "Destino" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "Eventos para: %s" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "Eventos do Tipo: %s" diff --git a/mayan/apps/events/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/events/locale/ro_RO/LC_MESSAGES/django.mo index be7128e4d1..60061a32fe 100644 Binary files a/mayan/apps/events/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/events/locale/ro_RO/LC_MESSAGES/django.po index 01cfb63d8c..fa08b42927 100644 --- a/mayan/apps/events/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/ro_RO/LC_MESSAGES/django.po @@ -1,39 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:07+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-" +"edms/language/ro_RO/)\n" +"Language: ro_RO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ro_RO\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "" @@ -42,11 +44,11 @@ msgstr "" msgid "Name" msgstr "Nume" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Tip eveniment" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "" @@ -54,16 +56,16 @@ msgstr "" msgid "Access the events of an object" msgstr "" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "" diff --git a/mayan/apps/events/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/events/locale/ru/LC_MESSAGES/django.mo index ee66c977d9..39d7f60095 100644 Binary files a/mayan/apps/events/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/ru/LC_MESSAGES/django.po b/mayan/apps/events/locale/ru/LC_MESSAGES/django.po index d812db1fa8..41564a2f71 100644 --- a/mayan/apps/events/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/ru/LC_MESSAGES/django.po @@ -1,40 +1,43 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # lilo.panic, 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-07-19 20:01+0000\n" "Last-Translator: lilo.panic\n" -"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "События" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "временная метка" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "Субъект" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "Глагол" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "Неизвестный или устаревший тип события: {0}" @@ -43,11 +46,11 @@ msgstr "Неизвестный или устаревший тип события msgid "Name" msgstr "Название" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Тип события" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "Типы событий" @@ -55,16 +58,16 @@ msgstr "Типы событий" msgid "Access the events of an object" msgstr "Доступ к событиям объекта" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "Объект" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "События для: %s" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "События с типом: %s" diff --git a/mayan/apps/events/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/events/locale/sl_SI/LC_MESSAGES/django.mo index d37939c3ed..685c32f713 100644 Binary files a/mayan/apps/events/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/events/locale/sl_SI/LC_MESSAGES/django.po index 7bd47d5b05..36c2f0b4a1 100644 --- a/mayan/apps/events/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/sl_SI/LC_MESSAGES/django.po @@ -1,39 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:07+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-" +"edms/language/sl_SI/)\n" +"Language: sl_SI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: sl_SI\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "" @@ -42,11 +44,11 @@ msgstr "" msgid "Name" msgstr "Ime" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "" @@ -54,16 +56,16 @@ msgstr "" msgid "Access the events of an object" msgstr "" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "" diff --git a/mayan/apps/events/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/events/locale/vi_VN/LC_MESSAGES/django.mo index 26f50e67a3..e8c1971996 100644 Binary files a/mayan/apps/events/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/events/locale/vi_VN/LC_MESSAGES/django.po index 228280c72f..c3a97b0832 100644 --- a/mayan/apps/events/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/vi_VN/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:07+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/" +"mayan-edms/language/vi_VN/)\n" +"Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "" @@ -42,11 +43,11 @@ msgstr "" msgid "Name" msgstr "Tên" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "Loại sự kiện" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "" @@ -54,16 +55,16 @@ msgstr "" msgid "Access the events of an object" msgstr "" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "" diff --git a/mayan/apps/events/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/events/locale/zh_CN/LC_MESSAGES/django.mo index f6bcb07fd9..1c733223cf 100644 Binary files a/mayan/apps/events/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/events/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/events/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/events/locale/zh_CN/LC_MESSAGES/django.po index 9b71cf75b7..38a66abc0e 100644 --- a/mayan/apps/events/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/events/locale/zh_CN/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:07+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" +"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/" +"language/zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:19 links.py:27 links.py:31 permissions.py:7 views.py:38 +#: apps.py:18 links.py:31 links.py:35 permissions.py:7 views.py:36 msgid "Events" msgstr "" -#: apps.py:56 +#: apps.py:27 msgid "Timestamp" msgstr "" -#: apps.py:58 +#: apps.py:29 msgid "Actor" msgstr "" -#: apps.py:60 +#: apps.py:31 msgid "Verb" msgstr "" -#: classes.py:17 +#: classes.py:22 #, python-brace-format msgid "Unknown or obsolete event type: {0}" msgstr "" @@ -42,11 +43,11 @@ msgstr "" msgid "Name" msgstr "名称" -#: models.py:20 +#: models.py:17 msgid "Event type" msgstr "事件类型" -#: models.py:21 +#: models.py:18 msgid "Event types" msgstr "" @@ -54,16 +55,16 @@ msgstr "" msgid "Access the events of an object" msgstr "" -#: views.py:31 views.py:90 +#: views.py:29 views.py:84 msgid "Target" msgstr "" -#: views.py:75 +#: views.py:69 #, python-format msgid "Events for: %s" msgstr "" -#: views.py:98 +#: views.py:92 #, python-format msgid "Events of type: %s" msgstr "" diff --git a/mayan/apps/events/tests/test_api.py b/mayan/apps/events/tests/test_api.py index dadc0f531a..63cea28c6c 100644 --- a/mayan/apps/events/tests/test_api.py +++ b/mayan/apps/events/tests/test_api.py @@ -2,10 +2,10 @@ from __future__ import unicode_literals from django.core.urlresolvers import reverse -from rest_framework.test import APITestCase +from rest_api.tests import BaseAPITestCase -class EventAPITestCase(APITestCase): +class EventAPITestCase(BaseAPITestCase): def test_evet_type_list_view(self): response = self.client.get(reverse('rest_api:event-type-list')) self.assertEqual(response.status_code, 200) diff --git a/mayan/apps/events/urls.py b/mayan/apps/events/urls.py index 873a38a576..f5fc5b8fbb 100644 --- a/mayan/apps/events/urls.py +++ b/mayan/apps/events/urls.py @@ -20,10 +20,10 @@ urlpatterns = [ ] api_urls = [ - url(r'^types/$', APIEventTypeListView.as_view(), name='event-type-list'), + url(r'^event_types/$', APIEventTypeListView.as_view(), name='event-type-list'), url(r'^events/$', APIEventListView.as_view(), name='event-list'), url( - r'^object/(?P[-\w]+)/(?P[-\w]+)/(?P\d+)/events/$', + r'^objects/(?P[-\w]+)/(?P[-\w]+)/(?P\d+)/events/$', APIObjectEventListView.as_view(), name='object-event-list' ), ] diff --git a/mayan/apps/folders/apps.py b/mayan/apps/folders/apps.py index 0d1a0eed95..8de30eb12b 100644 --- a/mayan/apps/folders/apps.py +++ b/mayan/apps/folders/apps.py @@ -28,8 +28,8 @@ from .permissions import ( class FoldersApp(MayanAppConfig): + has_tests = True name = 'folders' - test = True verbose_name = _('Folders') def ready(self): diff --git a/mayan/apps/folders/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/ar/LC_MESSAGES/django.mo index 00b45bf3bf..d42f05a0a9 100644 Binary files a/mayan/apps/folders/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/ar/LC_MESSAGES/django.po b/mayan/apps/folders/locale/ar/LC_MESSAGES/django.po index b858b60f3a..d892f387dd 100644 --- a/mayan/apps/folders/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/ar/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -19,8 +19,8 @@ msgstr "" "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" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "المجلدات" @@ -28,51 +28,55 @@ msgstr "المجلدات" msgid "Created" msgstr "" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "الوثائق" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "مجلد" - -#: links.py:20 -msgid "Add to a folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" msgstr "" -#: links.py:24 -msgid "Add to folder" +#: links.py:27 +msgid "Add to a folders" msgstr "" -#: links.py:27 views.py:42 +#: links.py:31 +msgid "Add to folders" +msgstr "" + +#: links.py:42 views.py:37 msgid "Create folder" msgstr "" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "" -#: links.py:36 -msgid "Remove from folder" -msgstr "" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "تحرير" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "مجلد" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -106,44 +110,88 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "يجب أن توفر ما لا يقل عن وثيقة واحدة." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "الوثيقة %(document)s تم اضافتها للمجلد %(folder)s بنجاح" +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "إضافة" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "الوثيقة %(document)s موجودة بالمجلد %(folder)s مسبقاً" -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "الوثيقة %(document)s تم اضافتها للمجلد %(folder)s بنجاح" + +#: views.py:212 +#, python-format +msgid "Remove from folder request performed on %(count)d document" +msgstr "" + +#: views.py:215 +#, python-format +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "إزالة" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" msgstr[1] "" msgstr[2] "" @@ -151,30 +199,57 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "يجب أن توفر ما لا يقل عن مجلد واحد." - -#: views.py:248 +#: views.py:235 #, python-format -msgid "Document: %s removed successfully." -msgstr "الوثيقة %s أزيلت بنجاح" +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" -#: views.py:254 -#, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "خطأ بمسح الوثيقة %(document)s : %(error)s" +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" -#: views.py:267 +#: views.py:273 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" +#~ msgstr[2] "97c0d1f6a737e93c542fd20ae2682559_pl_2" +#~ msgstr[3] "97c0d1f6a737e93c542fd20ae2682559_pl_3" +#~ msgstr[4] "97c0d1f6a737e93c542fd20ae2682559_pl_4" +#~ msgstr[5] "97c0d1f6a737e93c542fd20ae2682559_pl_5" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" +#~ msgstr[2] "81c6b0124b038e876c41a6794709629b_pl_2" +#~ msgstr[3] "81c6b0124b038e876c41a6794709629b_pl_3" +#~ msgstr[4] "81c6b0124b038e876c41a6794709629b_pl_4" +#~ msgstr[5] "81c6b0124b038e876c41a6794709629b_pl_5" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/bg/LC_MESSAGES/django.mo index f4126e9631..66a125c111 100644 Binary files a/mayan/apps/folders/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/bg/LC_MESSAGES/django.po b/mayan/apps/folders/locale/bg/LC_MESSAGES/django.po index c8e0310035..c1fe1370a0 100644 --- a/mayan/apps/folders/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/bg/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -20,8 +20,8 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Папки" @@ -29,51 +29,55 @@ msgstr "Папки" msgid "Created" msgstr "" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Документи" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Папка" - -#: links.py:20 -msgid "Add to a folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" msgstr "" -#: links.py:24 -msgid "Add to folder" +#: links.py:27 +msgid "Add to a folders" msgstr "" -#: links.py:27 views.py:42 +#: links.py:31 +msgid "Add to folders" +msgstr "" + +#: links.py:42 views.py:37 msgid "Create folder" msgstr "" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "" -#: links.py:36 -msgid "Remove from folder" -msgstr "" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "Редактиране" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Папка" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -107,67 +111,130 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Трябва да посочите поне един документ." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Документ: %(document)s е добавен в папка: %(folder)s успешно." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Добави" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Документ: %(document)s е вече в папка: %(folder)s." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Документ: %(document)s е добавен в папка: %(folder)s успешно." + +#: views.py:212 +#, python-format +msgid "Remove from folder request performed on %(count)d document" +msgstr "" + +#: views.py:215 +#, python-format +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Премахнете" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" msgstr[1] "" -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Трябва да поставите поне един документ в папката." - -#: views.py:248 +#: views.py:235 #, python-format -msgid "Document: %s removed successfully." -msgstr "Документ: %s премахнат успешно." +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" -#: views.py:254 -#, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Документ: %(document)s грешка при изтриване: %(error)s" +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" -#: views.py:267 +#: views.py:273 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "" -msgstr[1] "" +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/bs_BA/LC_MESSAGES/django.mo index a84f5c0552..91dd34d769 100644 Binary files a/mayan/apps/folders/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/folders/locale/bs_BA/LC_MESSAGES/django.po index c25394f916..7ddc4ecef3 100644 --- a/mayan/apps/folders/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/bs_BA/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -19,8 +19,8 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Folderi" @@ -28,51 +28,55 @@ msgstr "Folderi" msgid "Created" msgstr "" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Dokumenti" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Folder" - -#: links.py:20 -msgid "Add to a folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" msgstr "" -#: links.py:24 -msgid "Add to folder" +#: links.py:27 +msgid "Add to a folders" msgstr "" -#: links.py:27 views.py:42 +#: links.py:31 +msgid "Add to folders" +msgstr "" + +#: links.py:42 views.py:37 msgid "Create folder" msgstr "" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "" -#: links.py:36 -msgid "Remove from folder" -msgstr "" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "Urediti" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Folder" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -106,69 +110,134 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Mora biti barem jedan dokument." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Dokument: %(document)s uspješno dodan u folder: %(folder)s ." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Dodati" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Dokument: %(document)s je već u folderu: %(folder)s." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Dokument: %(document)s uspješno dodan u folder: %(folder)s ." + +#: views.py:212 +#, python-format +msgid "Remove from folder request performed on %(count)d document" +msgstr "" + +#: views.py:215 +#, python-format +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Ukloniti" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Mora biti makar jedan folder dokumenata." - -#: views.py:248 +#: views.py:235 #, python-format -msgid "Document: %s removed successfully." -msgstr "Dokument \"%s\" uspješno uklonjen." +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" -#: views.py:254 -#, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Dokument: %(document)s greška brisanja: %(error)s" +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" -#: views.py:267 +#: views.py:273 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" +#~ msgstr[2] "97c0d1f6a737e93c542fd20ae2682559_pl_2" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" +#~ msgstr[2] "81c6b0124b038e876c41a6794709629b_pl_2" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/da/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/da/LC_MESSAGES/django.mo index 2de6d19193..c3d85a4425 100644 Binary files a/mayan/apps/folders/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/da/LC_MESSAGES/django.po b/mayan/apps/folders/locale/da/LC_MESSAGES/django.po index c60daa7cf3..ee2fc9d07f 100644 --- a/mayan/apps/folders/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/da/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -19,8 +19,8 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Mapper" @@ -28,51 +28,55 @@ msgstr "Mapper" msgid "Created" msgstr "" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Dokumenter" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Mappe" - -#: links.py:20 -msgid "Add to a folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" msgstr "" -#: links.py:24 -msgid "Add to folder" +#: links.py:27 +msgid "Add to a folders" msgstr "" -#: links.py:27 views.py:42 +#: links.py:31 +msgid "Add to folders" +msgstr "" + +#: links.py:42 views.py:37 msgid "Create folder" msgstr "" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "" -#: links.py:36 -msgid "Remove from folder" -msgstr "" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Mappe" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -106,67 +110,130 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Angiv mindst ét ​​dokument." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Dokument: %(document)s føjet til mappen: %(folder)s med succes." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Dokument: %(document)s er allerede i mappen: %(folder)s." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Dokument: %(document)s føjet til mappen: %(folder)s med succes." + +#: views.py:212 +#, python-format +msgid "Remove from folder request performed on %(count)d document" +msgstr "" + +#: views.py:215 +#, python-format +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" msgstr[1] "" -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Skal give mindst ét mappe dokument." - -#: views.py:248 +#: views.py:235 #, python-format -msgid "Document: %s removed successfully." -msgstr "Dokument: %s blev slettet." +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" -#: views.py:254 -#, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Dokument: %(document)s slettefejl: %(error)s " +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" -#: views.py:267 +#: views.py:273 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "" -msgstr[1] "" +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/de_DE/LC_MESSAGES/django.mo index 749888c41c..d28e73042e 100644 Binary files a/mayan/apps/folders/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/folders/locale/de_DE/LC_MESSAGES/django.po index 1b29f895de..dc6ba287e6 100644 --- a/mayan/apps/folders/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/de_DE/LC_MESSAGES/django.po @@ -5,6 +5,7 @@ # Translators: # Translators: # Berny , 2015 +# Jesaja Everling , 2017 # Mathias Behrle , 2014 # Roberto Rosario, 2012 # Stefan Lodders , 2012 @@ -13,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" -"Last-Translator: Roberto Rosario\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-24 22:43+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,8 +24,8 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Ordner" @@ -32,51 +33,55 @@ msgstr "Ordner" msgid "Created" msgstr "Erstellt" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Dokumente" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Ordner" +#: links.py:24 links.py:34 +msgid "Remove from folders" +msgstr "Aus Ordner entfernen" -#: links.py:20 -msgid "Add to a folder" +#: links.py:27 +msgid "Add to a folders" msgstr "Zu Ordner hinzufügen" -#: links.py:24 -msgid "Add to folder" +#: links.py:31 +msgid "Add to folders" msgstr "Zu Ordner hinzufügen" -#: links.py:27 views.py:42 +#: links.py:42 views.py:37 msgid "Create folder" msgstr "Ordner erstellen" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "Löschen" -#: links.py:36 -msgid "Remove from folder" -msgstr "Aus Ordner entfernen" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "Bearbeiten" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "Alle" + +#: models.py:18 msgid "Label" msgstr "Bezeichner" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "Erstellungsdatum" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Ordner" + +#: models.py:56 msgid "Document folder" msgstr "Dokumentenordner" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "Dokumentenordner" @@ -110,67 +115,130 @@ msgstr "Dokumente zu Ordnern hinzufügen" msgid "Primary key of the document to be added." msgstr "Primärschlüssel des hinzuzufügenden Dokuments." -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "Ordner %s löschen?" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "Dokumente in Ordner %s" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "Ordner %s bearbeiten" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "Ordner mit Dokument %s" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Es muss mindestens ein Dokument angegeben werden." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Dokument %(document)s zu Ordner %(folder)s erfolgreich hinzugefügt" +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Hinzufügen" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Dokument %(document)s ist bereits im Ordner %(folder)s" -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" -msgstr[0] "Dokument zu Ordner hinzufügen" -msgstr[1] "Dokumente zu Ordner hinzufügen" - -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Es muss mindestens ein Ordnerdokument angegeben werden" - -#: views.py:248 +#: views.py:200 #, python-format -msgid "Document: %s removed successfully." -msgstr "Dokument \"%s\" erfolgreich entfernt" +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Dokument %(document)s zu Ordner %(folder)s erfolgreich hinzugefügt" -#: views.py:254 +#: views.py:212 #, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Fehler beim Löschen von Dokument %(document)s: %(error)s" +msgid "Remove from folder request performed on %(count)d document" +msgstr "" -#: views.py:267 +#: views.py:215 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "Ausgewähltes Dokument aus Ordner %(folder)s entfernen?" -msgstr[1] "Ausgewählte Dokumente aus Ordner %(folder)s entfernen?" +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Entfernen" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:235 +#, python-format +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" + +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" + +#: views.py:273 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/en/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/en/LC_MESSAGES/django.mo index 68442b990e..19b3f59342 100644 Binary files a/mayan/apps/folders/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/en/LC_MESSAGES/django.po b/mayan/apps/folders/locale/en/LC_MESSAGES/django.po index 2ef17ac4f4..9f20820a5d 100644 --- a/mayan/apps/folders/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2012-12-12 06:05+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,8 +18,8 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Folders" @@ -28,59 +28,63 @@ msgstr "Folders" msgid "Created" msgstr "created" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 #, fuzzy msgid "Documents" msgstr "documents" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Folder" - -#: links.py:20 +#: links.py:24 links.py:34 #, fuzzy -msgid "Add to a folder" +msgid "Remove from folders" +msgstr "remove from folder" + +#: links.py:27 +#, fuzzy +msgid "Add to a folders" msgstr "add to a folder" -#: links.py:24 +#: links.py:31 #, fuzzy -msgid "Add to folder" +msgid "Add to folders" msgstr "add to folder" -#: links.py:27 views.py:42 +#: links.py:42 views.py:37 #, fuzzy msgid "Create folder" msgstr "create folder" -#: links.py:32 +#: links.py:46 #, fuzzy msgid "Delete" msgstr "delete" -#: links.py:36 -#, fuzzy -msgid "Remove from folder" -msgstr "remove from folder" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:23 +#: models.py:21 #, fuzzy msgid "Datetime created" msgstr "datetime created" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Folder" + +#: models.py:56 #, fuzzy msgid "Document folder" msgstr "documents in folder: %s" -#: models.py:64 +#: models.py:57 #, fuzzy msgid "Document folders" msgstr "documents in folder: %s" @@ -120,72 +124,138 @@ msgstr "Add document to a folder" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, fuzzy, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "Delete new folders" -#: views.py:66 +#: views.py:61 #, fuzzy, python-format msgid "Documents in folder: %s" msgstr "documents in folder: %s" -#: views.py:93 +#: views.py:84 #, fuzzy, python-format msgid "Edit folder: %s" msgstr "edit folder: %s" -#: views.py:127 +#: views.py:116 #, fuzzy, python-format msgid "Folders containing document: %s" msgstr "folders containing: %s" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Must provide at least one document." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Document: %(document)s added to folder: %(folder)s successfully." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "" + +#: views.py:139 +#, fuzzy +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "Add document to a folder" +msgstr[1] "Add document to a folder" + +#: views.py:150 +#, fuzzy, python-format +msgid "Add document \"%s\" to folders" +msgstr "Add document to a folder" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Document: %(document)s is already in folder: %(folder)s." -#: views.py:205 +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Document: %(document)s added to folder: %(folder)s successfully." + +#: views.py:212 +#, python-format +msgid "Remove from folder request performed on %(count)d document" +msgstr "" + +#: views.py:215 +#, python-format +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "" + +#: views.py:224 #, fuzzy -msgid "Add document to folder" -msgid_plural "Add documents to folder" -msgstr[0] "Add document to a folder" -msgstr[1] "Add document to a folder" +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" +msgstr[0] "Remove documents from folders" +msgstr[1] "Remove documents from folders" -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Must provide at least one folder document." - -#: views.py:248 -#, python-format -msgid "Document: %s removed successfully." -msgstr "Document: %s removed successfully." - -#: views.py:254 -#, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Document: %(document)s delete error: %(error)s" - -#: views.py:267 +#: views.py:235 #, fuzzy, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "" -"Are you sure you wish to remove the document: %(document)s from the folder " -"\"%(folder)s\"?" -msgstr[1] "" -"Are you sure you wish to remove the document: %(document)s from the folder " -"\"%(folder)s\"?" +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "Remove documents from folders" + +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" + +#: views.py:273 +#, fuzzy, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "Document: %(document)s is already in folder: %(folder)s." + +#: views.py:282 +#, fuzzy, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "Document: %(document)s is already in folder: %(folder)s." + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#, fuzzy +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "Add document to a folder" +#~ msgstr[1] "Add document to a folder" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#, fuzzy +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "" +#~ "Are you sure you wish to remove the document: %(document)s from the " +#~ "folder \"%(folder)s\"?" +#~ msgstr[1] "" +#~ "Are you sure you wish to remove the document: %(document)s from the " +#~ "folder \"%(folder)s\"?" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/es/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/es/LC_MESSAGES/django.mo index ef6452098c..4eabb60e19 100644 Binary files a/mayan/apps/folders/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/es/LC_MESSAGES/django.po b/mayan/apps/folders/locale/es/LC_MESSAGES/django.po index acaa5a9978..5de5e425eb 100644 --- a/mayan/apps/folders/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/es/LC_MESSAGES/django.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-05-09 01:41+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 17:50+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -22,8 +22,8 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Carpetas" @@ -31,51 +31,55 @@ msgstr "Carpetas" msgid "Created" msgstr "Creado" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Documentos" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Carpeta" +#: links.py:24 links.py:34 +msgid "Remove from folders" +msgstr "" -#: links.py:20 -msgid "Add to a folder" -msgstr "Añadir a una carpeta" +#: links.py:27 +msgid "Add to a folders" +msgstr "" -#: links.py:24 -msgid "Add to folder" -msgstr "Añadir a carpeta" +#: links.py:31 +msgid "Add to folders" +msgstr "" -#: links.py:27 views.py:42 +#: links.py:42 views.py:37 msgid "Create folder" msgstr "Crear carpetas" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "Borrar" -#: links.py:36 -msgid "Remove from folder" -msgstr "Remover de la carpeta" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "Editar" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "Todos" + +#: models.py:18 msgid "Label" msgstr "Etiqueta" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "Fecha y hora que fue creado" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Carpeta" + +#: models.py:56 msgid "Document folder" msgstr "Carpeta de documento" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "Carpetas de documento" @@ -109,67 +113,130 @@ msgstr "Agregar documentos a carpetas" msgid "Primary key of the document to be added." msgstr "Llave primaria del documento a ser agregado." -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "¿Eliminar la carpeta: %s?" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "Documentos en la carpeta: %s" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "Editar carpeta: %s" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "Las carpetas que contienen el documento: %s" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Debe proporcionar al menos un documento." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Documento: %(document)s agregado a la carpeta: %(folder)s con éxito." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Agregar" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Documento: %(document)s ya está en la carpeta: %(folder)s." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" -msgstr[0] "Añadir documento a la carpeta" -msgstr[1] "Añadir los documentos a la carpeta" - -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Debe proveer al menos un documento de carpeta." - -#: views.py:248 +#: views.py:200 #, python-format -msgid "Document: %s removed successfully." -msgstr "Documento: %s eliminado con éxito." +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Documento: %(document)s agregado a la carpeta: %(folder)s con éxito." -#: views.py:254 +#: views.py:212 #, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Documento: %(document)s error de eliminación: %(error)s " +msgid "Remove from folder request performed on %(count)d document" +msgstr "" -#: views.py:267 +#: views.py:215 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "¿Eliminar el documento seleccionado de la carpeta: %(folder)s?" -msgstr[1] "¿Eliminar los documentos seleccionados de la carpeta: %(folder)s?" +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Eliminar" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:235 +#, python-format +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" + +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" + +#: views.py:273 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/fa/LC_MESSAGES/django.mo index aa8f61db7d..35070c51cc 100644 Binary files a/mayan/apps/folders/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/fa/LC_MESSAGES/django.po b/mayan/apps/folders/locale/fa/LC_MESSAGES/django.po index 1380366ecf..bbd4f34faf 100644 --- a/mayan/apps/folders/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/fa/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -18,8 +18,8 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "پرونده ها" @@ -27,51 +27,55 @@ msgstr "پرونده ها" msgid "Created" msgstr "ساخته‌شده" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "اسناد" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "پرونده" +#: links.py:24 links.py:34 +msgid "Remove from folders" +msgstr "" -#: links.py:20 -msgid "Add to a folder" -msgstr "اضافه به پرونده" +#: links.py:27 +msgid "Add to a folders" +msgstr "" -#: links.py:24 -msgid "Add to folder" -msgstr "اضافه به پرونده" +#: links.py:31 +msgid "Add to folders" +msgstr "" -#: links.py:27 views.py:42 +#: links.py:42 views.py:37 msgid "Create folder" msgstr "ایجاد پرونده" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "حذف" -#: links.py:36 -msgid "Remove from folder" -msgstr "حذف از پرونده" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "ویرایش" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "برچسب" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "تاریخ و زمان ایجاد" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "پرونده" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -105,66 +109,127 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "اسناد داحل پرونده:%s" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "ویرایش پرونده: %s" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "پوشه های شامل اسناد : %s" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "حداقل یک سند باید ارایه شود." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "سند%(document)s با موفقیت به پرونده%(folder)s اضافه شد." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "افزودن" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "سند%(document)s درون پرونده%(folder)s. میباشد." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" -msgstr[0] "اسناد را به پوشه اضافه کنید" - -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "حداقل یک پرونده سند باید ارایه گردد." - -#: views.py:248 +#: views.py:200 #, python-format -msgid "Document: %s removed successfully." -msgstr "سند: %s با موفقیت حذف شد." +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "سند%(document)s با موفقیت به پرونده%(folder)s اضافه شد." -#: views.py:254 +#: views.py:212 #, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "سند%(document)s خطای حذف%(error)s" +msgid "Remove from folder request performed on %(count)d document" +msgstr "" -#: views.py:267 +#: views.py:215 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "حذف" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" +#: views.py:235 +#, python-format +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" + +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" + +#: views.py:273 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" + #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/fr/LC_MESSAGES/django.mo index 768c59ea0a..457c6bd385 100644 Binary files a/mayan/apps/folders/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/fr/LC_MESSAGES/django.po b/mayan/apps/folders/locale/fr/LC_MESSAGES/django.po index 68ffc036d4..8354e92018 100644 --- a/mayan/apps/folders/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/fr/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" @@ -21,8 +21,8 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Répertoires" @@ -30,51 +30,55 @@ msgstr "Répertoires" msgid "Created" msgstr "Créé" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Documents" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Répertoire" +#: links.py:24 links.py:34 +msgid "Remove from folders" +msgstr "" -#: links.py:20 -msgid "Add to a folder" -msgstr "Ajouter à un dossier" +#: links.py:27 +msgid "Add to a folders" +msgstr "" -#: links.py:24 -msgid "Add to folder" -msgstr "Ajouter au dossier" +#: links.py:31 +msgid "Add to folders" +msgstr "" -#: links.py:27 views.py:42 +#: links.py:42 views.py:37 msgid "Create folder" msgstr "Créer un dossier" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "Supprimer" -#: links.py:36 -msgid "Remove from folder" -msgstr "Supprimer du dossier" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "Modifier" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Libellé" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "Date et heure de création" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Répertoire" + +#: models.py:56 msgid "Document folder" msgstr "Dossier du document" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "Dossiers" @@ -108,67 +112,130 @@ msgstr "Ajouter des documents aux dossiers" msgid "Primary key of the document to be added." msgstr "Clé primaire du document à ajouter." -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "Supprimer les dossier : %s ?" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "Documents du dossier: %s" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "Modifier le répertoire: %s" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "Dossiers contenant le document: %s" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Il est nécessaire de fournir au moins un document." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Document: %(document)s ajouté avec succès au répertoire: %(folder)s." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Ajouter" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Document: %(document)s est déjà présent dans le répertoire: %(folder)s." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" -msgstr[0] "Ajouter un document au répertoire" -msgstr[1] "Ajouter les documents au répertoire" - -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Vous devez fournir au moins un document pour le répertoire." - -#: views.py:248 +#: views.py:200 #, python-format -msgid "Document: %s removed successfully." -msgstr "Document: %s supprimé avec succès." +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Document: %(document)s ajouté avec succès au répertoire: %(folder)s." -#: views.py:254 +#: views.py:212 #, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Document: %(document)s erreur de suppression: %(error)s" +msgid "Remove from folder request performed on %(count)d document" +msgstr "" -#: views.py:267 +#: views.py:215 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "Êtes vous certain de vouloir supprimer le document sélectionné du dossier %(folder)s ?" -msgstr[1] "Êtes vous certain de vouloir supprimer les documents sélectionnés du dossier %(folder)s ?" +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Supprimer" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:235 +#, python-format +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" + +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" + +#: views.py:273 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/hu/LC_MESSAGES/django.mo index e6afc46599..e9f68cf9d5 100644 Binary files a/mayan/apps/folders/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/hu/LC_MESSAGES/django.po b/mayan/apps/folders/locale/hu/LC_MESSAGES/django.po index f0af4349d8..75d30e08aa 100644 --- a/mayan/apps/folders/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/hu/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -19,8 +19,8 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Mappák" @@ -28,51 +28,55 @@ msgstr "Mappák" msgid "Created" msgstr "" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "dokumentumok" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Mappa" - -#: links.py:20 -msgid "Add to a folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" msgstr "" -#: links.py:24 -msgid "Add to folder" +#: links.py:27 +msgid "Add to a folders" msgstr "" -#: links.py:27 views.py:42 +#: links.py:31 +msgid "Add to folders" +msgstr "" + +#: links.py:42 views.py:37 msgid "Create folder" msgstr "" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "" -#: links.py:36 -msgid "Remove from folder" -msgstr "" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Mappa" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -106,67 +110,130 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Adjon meg legalább egy dokumentumot." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "A %(document)s dokumentum elhelyezése a %(folder)s mappában sikerült." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "A %(document)s nevű dokumentum már van a %(folder)s. mappában." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "A %(document)s dokumentum elhelyezése a %(folder)s mappában sikerült." + +#: views.py:212 +#, python-format +msgid "Remove from folder request performed on %(count)d document" +msgstr "" + +#: views.py:215 +#, python-format +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" msgstr[1] "" -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Legalább egy dokumentum mappa szükséges" - -#: views.py:248 +#: views.py:235 #, python-format -msgid "Document: %s removed successfully." -msgstr "A %s dokumentum eltávolítása sikerült." +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" -#: views.py:254 -#, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Hiba %(error)s a %(document)s dokumentum törlésekor." +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" -#: views.py:267 +#: views.py:273 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "" -msgstr[1] "" +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/id/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/id/LC_MESSAGES/django.mo index 902719afa1..2a3525b88b 100644 Binary files a/mayan/apps/folders/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/id/LC_MESSAGES/django.po b/mayan/apps/folders/locale/id/LC_MESSAGES/django.po index aeaf59e46c..195392107e 100644 --- a/mayan/apps/folders/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,8 +18,8 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "" @@ -27,51 +27,55 @@ msgstr "" msgid "Created" msgstr "" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Dokumen" -#: forms.py:34 models.py:44 -msgid "Folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" msgstr "" -#: links.py:20 -msgid "Add to a folder" +#: links.py:27 +msgid "Add to a folders" msgstr "" -#: links.py:24 -msgid "Add to folder" +#: links.py:31 +msgid "Add to folders" msgstr "" -#: links.py:27 views.py:42 +#: links.py:42 views.py:37 msgid "Create folder" msgstr "" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "" -#: links.py:36 -msgid "Remove from folder" -msgstr "" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -105,66 +109,127 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Harus memberikan setidaknya satu dokumen." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgid "Add to folder request performed on %(count)d document" msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "tambah" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "" -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" -msgstr[0] "" - -#: views.py:227 -msgid "Must provide at least one folder document." +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." msgstr "" -#: views.py:248 +#: views.py:212 #, python-format -msgid "Document: %s removed successfully." +msgid "Remove from folder request performed on %(count)d document" msgstr "" -#: views.py:254 +#: views.py:215 #, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Dokumen: %(document)s penghapusan bermasalah: %(error)s" +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" -#: views.py:267 -#, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#: views.py:222 +msgid "Remove" +msgstr "hapus" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" +#: views.py:235 +#, python-format +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" + +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" + +#: views.py:273 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" + #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/it/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/it/LC_MESSAGES/django.mo index d1bfbbdc72..6a5ce41672 100644 Binary files a/mayan/apps/folders/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/it/LC_MESSAGES/django.po b/mayan/apps/folders/locale/it/LC_MESSAGES/django.po index fa6fd9ff74..a7c607343b 100644 --- a/mayan/apps/folders/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/it/LC_MESSAGES/django.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-09-24 10:31+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Marco Camplese \n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" @@ -23,8 +23,8 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Cartelle" @@ -32,51 +32,55 @@ msgstr "Cartelle" msgid "Created" msgstr "Creato" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Documenti" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Cartella" +#: links.py:24 links.py:34 +msgid "Remove from folders" +msgstr "" -#: links.py:20 -msgid "Add to a folder" -msgstr "Aggiungi ad una cartella" +#: links.py:27 +msgid "Add to a folders" +msgstr "" -#: links.py:24 -msgid "Add to folder" -msgstr "Aggiungi alla cartella" +#: links.py:31 +msgid "Add to folders" +msgstr "" -#: links.py:27 views.py:42 +#: links.py:42 views.py:37 msgid "Create folder" msgstr "Crea cartella" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "Cancella" -#: links.py:36 -msgid "Remove from folder" -msgstr "Rimuovi dalla cartella" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "Modifica" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Etichetta" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "Data e ora di creazione" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Cartella" + +#: models.py:56 msgid "Document folder" msgstr "Cartella documento" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "Cartella documenti" @@ -110,67 +114,130 @@ msgstr "Aggiungi i documenti alle cartelle" msgid "Primary key of the document to be added." msgstr "Chiave primaria del documento da aggiungere" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "Cancellare la cartella: %s?" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "Documenti nella cartella: %s?" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "Modifica cartella: %s" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "Cartelle che contengono il documento: %s" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Bisogna fornire almeno un documento." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Documento: %(document)s aggiunto alla cartella: %(folder)s successfully." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Aggiungi" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Documento: %(document)s è già nella cartella: %(folder)s." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" -msgstr[0] "Aggiungi documento alla cartella" -msgstr[1] "Aggiungi documenti alla cartella" - -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Devi almeno indicare una cartella documenti." - -#: views.py:248 +#: views.py:200 #, python-format -msgid "Document: %s removed successfully." -msgstr "Documento: %s cancellato con successo." +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Documento: %(document)s aggiunto alla cartella: %(folder)s successfully." -#: views.py:254 +#: views.py:212 #, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Documento: %(document)s errore di cancellazione: %(error)s" +msgid "Remove from folder request performed on %(count)d document" +msgstr "" -#: views.py:267 +#: views.py:215 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "Rimuovere il documento selezionato dalla cartella: %(folder)s?" -msgstr[1] "Rimuovere i documenti selezionati dalla cartella: %(folder)s?" +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Rimuovi" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:235 +#, python-format +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" + +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" + +#: views.py:273 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/nl_NL/LC_MESSAGES/django.mo index e66bca40b5..4ee4ace053 100644 Binary files a/mayan/apps/folders/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/folders/locale/nl_NL/LC_MESSAGES/django.po index bff47df7dd..c7ac614503 100644 --- a/mayan/apps/folders/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/nl_NL/LC_MESSAGES/django.po @@ -5,13 +5,14 @@ # Translators: # Translators: # Evelijn Saaltink , 2016 +# Johan Braeken, 2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-11-01 09:04+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,8 +20,8 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Mappen" @@ -28,51 +29,55 @@ msgstr "Mappen" msgid "Created" msgstr "Aangemaakt" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Documenten" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Map" +#: links.py:24 links.py:34 +msgid "Remove from folders" +msgstr "" -#: links.py:20 -msgid "Add to a folder" -msgstr "Voeg toe aan een map" +#: links.py:27 +msgid "Add to a folders" +msgstr "" -#: links.py:24 -msgid "Add to folder" -msgstr "Voeg toe aan map" +#: links.py:31 +msgid "Add to folders" +msgstr "" -#: links.py:27 views.py:42 +#: links.py:42 views.py:37 msgid "Create folder" msgstr "Maak map" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "Verwijder" -#: links.py:36 -msgid "Remove from folder" -msgstr "Verwijder uit map" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "bewerken" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Label" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "Datumtijd aangemaakt" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Map" + +#: models.py:56 msgid "Document folder" msgstr "Documentmap" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "Documentmappen" @@ -104,70 +109,133 @@ msgstr "Voeg documenten toe aan mappe" #: serializers.py:58 msgid "Primary key of the document to be added." -msgstr "" +msgstr "Primaire sleutel van het toe te voegen document." -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "Verwijder de map: %s?" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "Documenten in map: %s" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "Bewerk map: %s" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "Mappen die document %s bevatten" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "U dient minstens 1 document aan te geven." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Document: %(document)s succesvol toegevoegd aan map: %(folder)s." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Voeg toe" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Document: %(document)s bestaat al in map: %(folder)s." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" -msgstr[0] "Voeg document toe aan map" -msgstr[1] "Voeg documenten toe aan map" - -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "U dient tenminste één mapdocument op te geven." - -#: views.py:248 +#: views.py:200 #, python-format -msgid "Document: %s removed successfully." -msgstr "Document: %s succesvol verwijderd." +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Document: %(document)s succesvol toegevoegd aan map: %(folder)s." -#: views.py:254 +#: views.py:212 #, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Fout bij verwijderen document: %(document)s. foutmelding: %(error)s" +msgid "Remove from folder request performed on %(count)d document" +msgstr "" -#: views.py:267 +#: views.py:215 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Verwijder" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" msgstr[1] "" +#: views.py:235 +#, python-format +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" + +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" + +#: views.py:273 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" + #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/pl/LC_MESSAGES/django.mo index d96133b64b..1d36225c72 100644 Binary files a/mayan/apps/folders/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/pl/LC_MESSAGES/django.po b/mayan/apps/folders/locale/pl/LC_MESSAGES/django.po index 64d57db613..ff4b083470 100644 --- a/mayan/apps/folders/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/pl/LC_MESSAGES/django.po @@ -11,18 +11,18 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Foldery" @@ -30,51 +30,55 @@ msgstr "Foldery" msgid "Created" msgstr "Utworzony" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Dokumenty" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" +msgstr "" -#: links.py:20 -msgid "Add to a folder" -msgstr "Dodaj do folderu" +#: links.py:27 +msgid "Add to a folders" +msgstr "" -#: links.py:24 -msgid "Add to folder" -msgstr "Dodaj do folderu" +#: links.py:31 +msgid "Add to folders" +msgstr "" -#: links.py:27 views.py:42 +#: links.py:42 views.py:37 msgid "Create folder" msgstr "Utwórz folder" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "Usuń" -#: links.py:36 -msgid "Remove from folder" -msgstr "Usuń z folderu" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "Edytuj" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Etykieta" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "Data utworzenia" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Folder" + +#: models.py:56 msgid "Document folder" msgstr "Folder dokumentów" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "Foldery dokumentów" @@ -108,69 +112,138 @@ msgstr "Dodaj dokumenty do folderów" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "Usunąć folder: %s?" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "Dokumenty w folderze: %s" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "Edycja folderu: %s" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "Foldery zawierające dokument: %s" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Musisz dodać co najmniej jeden dokument." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Dokument : %(document)s pomyślnie dodano do folderu: %(folder)s." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Dodaj" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Dokument: %(document)s jest już w folderze: %(folder)s." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" -msgstr[0] "Dodaj dokument do folderu" -msgstr[1] "Dodaj dokumenty do folderu" -msgstr[2] "Dodaj dokumenty do folderu" - -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Musisz dodać co najmiej jeden katalog dokumentów." - -#: views.py:248 +#: views.py:200 #, python-format -msgid "Document: %s removed successfully." -msgstr "Pomyślnie usunięto dokument: %s. " +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Dokument : %(document)s pomyślnie dodano do folderu: %(folder)s." -#: views.py:254 +#: views.py:212 #, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Błąd %(error)s podczas usuwania dokumentu %(document)s" +msgid "Remove from folder request performed on %(count)d document" +msgstr "" -#: views.py:267 +#: views.py:215 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "Usunąć wybrany dokument z folderu: %(folder)s?" -msgstr[1] "Usunąć wybrane dokumenty z folderu: %(folder)s?" -msgstr[2] "Usunąć wybrane dokumenty z folderu: %(folder)s?" +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Usuń" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:235 +#, python-format +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" + +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" + +#: views.py:273 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" +#~ msgstr[2] "97c0d1f6a737e93c542fd20ae2682559_pl_2" +#~ msgstr[3] "97c0d1f6a737e93c542fd20ae2682559_pl_3" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" +#~ msgstr[2] "81c6b0124b038e876c41a6794709629b_pl_2" +#~ msgstr[3] "81c6b0124b038e876c41a6794709629b_pl_3" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/pt/LC_MESSAGES/django.mo index 0f7ce74b79..2fc977d8f2 100644 Binary files a/mayan/apps/folders/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/pt/LC_MESSAGES/django.po b/mayan/apps/folders/locale/pt/LC_MESSAGES/django.po index 5a8f74114e..7c42a09e08 100644 --- a/mayan/apps/folders/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/pt/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -21,8 +21,8 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Pastas" @@ -30,51 +30,55 @@ msgstr "Pastas" msgid "Created" msgstr "" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Documentos" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Pasta" - -#: links.py:20 -msgid "Add to a folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" msgstr "" -#: links.py:24 -msgid "Add to folder" +#: links.py:27 +msgid "Add to a folders" msgstr "" -#: links.py:27 views.py:42 +#: links.py:31 +msgid "Add to folders" +msgstr "" + +#: links.py:42 views.py:37 msgid "Create folder" msgstr "" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "Eliminar" -#: links.py:36 -msgid "Remove from folder" -msgstr "" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "Editar" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Nome" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Pasta" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -108,67 +112,130 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Deve fornecer pelo menos um documento." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Documento: %(document)s adicionados à pasta: %(folder)s com sucesso." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Adicionar" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Documento: %(document)s já está na pasta: %(folder)s ." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Documento: %(document)s adicionados à pasta: %(folder)s com sucesso." + +#: views.py:212 +#, python-format +msgid "Remove from folder request performed on %(count)d document" +msgstr "" + +#: views.py:215 +#, python-format +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Remover" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" msgstr[1] "" -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Deve fornecer pelo menos um documento da pasta." - -#: views.py:248 +#: views.py:235 #, python-format -msgid "Document: %s removed successfully." -msgstr "Documento: %s removido com sucesso." +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" -#: views.py:254 -#, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Documento: %(document)s erro ao eliminar: %(error)s " +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" -#: views.py:267 +#: views.py:273 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "" -msgstr[1] "" +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/pt_BR/LC_MESSAGES/django.mo index 40124051ff..03e7ef6454 100644 Binary files a/mayan/apps/folders/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/folders/locale/pt_BR/LC_MESSAGES/django.po index ec519ea5bb..0f11ad388e 100644 --- a/mayan/apps/folders/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/pt_BR/LC_MESSAGES/django.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-11-17 23:07+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Aline Freitas \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -23,8 +23,8 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Pastas" @@ -32,51 +32,55 @@ msgstr "Pastas" msgid "Created" msgstr "Criada" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Documentos" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Pasta" +#: links.py:24 links.py:34 +msgid "Remove from folders" +msgstr "" -#: links.py:20 -msgid "Add to a folder" -msgstr "Adicionar a uma pasta" +#: links.py:27 +msgid "Add to a folders" +msgstr "" -#: links.py:24 -msgid "Add to folder" -msgstr "Adicione a pasta" +#: links.py:31 +msgid "Add to folders" +msgstr "" -#: links.py:27 views.py:42 +#: links.py:42 views.py:37 msgid "Create folder" msgstr "Criar pasta" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "Excluir" -#: links.py:36 -msgid "Remove from folder" -msgstr "Remover da pasta" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "Editar" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Etiqueta" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "Data e hora de criação" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Pasta" + +#: models.py:56 msgid "Document folder" msgstr "Pasta de documento" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "Pastas de documentos" @@ -110,67 +114,130 @@ msgstr "Adicionar documentos para pastas" msgid "Primary key of the document to be added." msgstr "Chave primária do documento a ser adicionado." -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "Apagar a pasta: %s?" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "Documentos na pasta: %s" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "Editar pasta: %s" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "Pastas contendo documento:%s" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Deve fornecer, pelo menos, um documento." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Documento: %(document)s adicionados à pasta: %(folder)s com sucesso." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Adicionar" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Documento: %(document)s já está na pasta: %(folder)s ." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" -msgstr[0] "Adicionar documento para pasta" -msgstr[1] "Adicionar documentos para pasta" - -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Deve fornecer pelo menos um documento da pasta." - -#: views.py:248 +#: views.py:200 #, python-format -msgid "Document: %s removed successfully." -msgstr "Documento: %s removido com sucesso." +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Documento: %(document)s adicionados à pasta: %(folder)s com sucesso." -#: views.py:254 +#: views.py:212 #, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Documento: %(document)s erro ao deletar: %(error)s " +msgid "Remove from folder request performed on %(count)d document" +msgstr "" -#: views.py:267 +#: views.py:215 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "Remove o documento selecionado da pasta: %(folder)s?" -msgstr[1] "Remove os documentos selecionados da pasta: %(folder)s?" +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Remover" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" +msgstr[0] "" +msgstr[1] "" + +#: views.py:235 +#, python-format +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" + +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" + +#: views.py:273 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/ro_RO/LC_MESSAGES/django.mo index 88ac90571e..1713ebc678 100644 Binary files a/mayan/apps/folders/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/folders/locale/ro_RO/LC_MESSAGES/django.po index cecc58b1d8..332fda2e94 100644 --- a/mayan/apps/folders/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/ro_RO/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-04-17 09:43+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -19,8 +19,8 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Directoare" @@ -28,51 +28,55 @@ msgstr "Directoare" msgid "Created" msgstr "" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Documente" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Director" - -#: links.py:20 -msgid "Add to a folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" msgstr "" -#: links.py:24 -msgid "Add to folder" +#: links.py:27 +msgid "Add to a folders" msgstr "" -#: links.py:27 views.py:42 +#: links.py:31 +msgid "Add to folders" +msgstr "" + +#: links.py:42 views.py:37 msgid "Create folder" msgstr "" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "Șterge" -#: links.py:36 -msgid "Remove from folder" -msgstr "" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "Editează" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Etichetă" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Director" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -106,69 +110,134 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Trebuie selectat cel puțin un document." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Documentul:%(document)s a fost adăugat la directorul :%(folder)s cu succes." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Adaugă" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Documentul: %(document)s este deja în directorul : %(folder)s." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Documentul:%(document)s a fost adăugat la directorul :%(folder)s cu succes." + +#: views.py:212 +#, python-format +msgid "Remove from folder request performed on %(count)d document" +msgstr "" + +#: views.py:215 +#, python-format +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Şterge" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Trebuie selectat cel puțin un director." - -#: views.py:248 +#: views.py:235 #, python-format -msgid "Document: %s removed successfully." -msgstr "Document: % s eliminat cu succes." +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" -#: views.py:254 -#, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Eroare %(error)s ştergere document %(document)s" +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" -#: views.py:267 +#: views.py:273 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" +#~ msgstr[2] "97c0d1f6a737e93c542fd20ae2682559_pl_2" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" +#~ msgstr[2] "81c6b0124b038e876c41a6794709629b_pl_2" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/ru/LC_MESSAGES/django.mo index 8f3c334adb..df0e1fcea2 100644 Binary files a/mayan/apps/folders/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/ru/LC_MESSAGES/django.po b/mayan/apps/folders/locale/ru/LC_MESSAGES/django.po index 7b075a92c4..c606d3f136 100644 --- a/mayan/apps/folders/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/ru/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-11-02 04:15+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" @@ -18,8 +18,8 @@ msgstr "" "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" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Папки" @@ -27,51 +27,55 @@ msgstr "Папки" msgid "Created" msgstr "Создано" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Документы" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Папка" - -#: links.py:20 -msgid "Add to a folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" msgstr "" -#: links.py:24 -msgid "Add to folder" +#: links.py:27 +msgid "Add to a folders" msgstr "" -#: links.py:27 views.py:42 +#: links.py:31 +msgid "Add to folders" +msgstr "" + +#: links.py:42 views.py:37 msgid "Create folder" msgstr "" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "Удалить" -#: links.py:36 -msgid "Remove from folder" -msgstr "" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "Редактировать" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Надпись" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Папка" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -105,71 +109,138 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Необходимо указатьть хотя бы один документ." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Документ: %(document)s добавлен в папку: %(folder)s успешно." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Добавить" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Документ: %(document)s is already in folder: %(folder)s." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Документ: %(document)s добавлен в папку: %(folder)s успешно." + +#: views.py:212 +#, python-format +msgid "Remove from folder request performed on %(count)d document" +msgstr "" + +#: views.py:215 +#, python-format +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Удалить" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Должна быть хотя бы одна папка документов." - -#: views.py:248 +#: views.py:235 #, python-format -msgid "Document: %s removed successfully." -msgstr "Документ: %s успешно удален." +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" -#: views.py:254 -#, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Документ:%(document)s ошибка удаления: %(error)s" +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" -#: views.py:267 +#: views.py:273 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" +#~ msgstr[2] "97c0d1f6a737e93c542fd20ae2682559_pl_2" +#~ msgstr[3] "97c0d1f6a737e93c542fd20ae2682559_pl_3" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" +#~ msgstr[2] "81c6b0124b038e876c41a6794709629b_pl_2" +#~ msgstr[3] "81c6b0124b038e876c41a6794709629b_pl_3" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/sl_SI/LC_MESSAGES/django.mo index bb1e3b162f..6e939825bc 100644 Binary files a/mayan/apps/folders/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/folders/locale/sl_SI/LC_MESSAGES/django.po index dc98b876bb..b2968a9a9c 100644 --- a/mayan/apps/folders/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-11-17 08:59+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,8 +18,8 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "" @@ -27,51 +27,55 @@ msgstr "" msgid "Created" msgstr "" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Dokumenti" -#: forms.py:34 models.py:44 -msgid "Folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" msgstr "" -#: links.py:20 -msgid "Add to a folder" +#: links.py:27 +msgid "Add to a folders" msgstr "" -#: links.py:24 -msgid "Add to folder" +#: links.py:31 +msgid "Add to folders" msgstr "" -#: links.py:27 views.py:42 +#: links.py:42 views.py:37 msgid "Create folder" msgstr "" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "" -#: links.py:36 -msgid "Remove from folder" -msgstr "" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Oznaka" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -105,71 +109,138 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Potrebno je podati vsaj en dokument" - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgid "Add to folder request performed on %(count)d document" msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "" -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "" + +#: views.py:212 +#, python-format +msgid "Remove from folder request performed on %(count)d document" +msgstr "" + +#: views.py:215 +#, python-format +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: views.py:227 -msgid "Must provide at least one folder document." +#: views.py:235 +#, python-format +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" msgstr "" -#: views.py:248 -#, python-format -msgid "Document: %s removed successfully." +#: views.py:246 +msgid "Folders from which the selected documents will be removed." msgstr "" -#: views.py:254 +#: views.py:273 #, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Dokument: %(document)s napaka brisanja:%(error)s" +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" -#: views.py:267 +#: views.py:282 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" +#~ msgstr[1] "97c0d1f6a737e93c542fd20ae2682559_pl_1" +#~ msgstr[2] "97c0d1f6a737e93c542fd20ae2682559_pl_2" +#~ msgstr[3] "97c0d1f6a737e93c542fd20ae2682559_pl_3" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" +#~ msgstr[1] "81c6b0124b038e876c41a6794709629b_pl_1" +#~ msgstr[2] "81c6b0124b038e876c41a6794709629b_pl_2" +#~ msgstr[3] "81c6b0124b038e876c41a6794709629b_pl_3" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/vi_VN/LC_MESSAGES/django.mo index 82aaa58b8f..c9ec562a4e 100644 Binary files a/mayan/apps/folders/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/folders/locale/vi_VN/LC_MESSAGES/django.po index 58601cfeef..cdc1e0b29a 100644 --- a/mayan/apps/folders/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/vi_VN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -19,8 +19,8 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "Các thư mục" @@ -28,51 +28,55 @@ msgstr "Các thư mục" msgid "Created" msgstr "" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "Tài liệu" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "Thư mục" - -#: links.py:20 -msgid "Add to a folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" msgstr "" -#: links.py:24 -msgid "Add to folder" +#: links.py:27 +msgid "Add to a folders" msgstr "" -#: links.py:27 views.py:42 +#: links.py:31 +msgid "Add to folders" +msgstr "" + +#: links.py:42 views.py:37 msgid "Create folder" msgstr "" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "" -#: links.py:36 -msgid "Remove from folder" -msgstr "" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "Sửa" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "Thư mục" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -106,65 +110,126 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "Cần cung cấp ít nhất một tài liệu." - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "Tài liệu: %(document)s được thêm vào thư mục: %(folder)s thành công." +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "Thêm" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "Tài liệu: %(document)s đã tồn tại trong thư mục: %(folder)s." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "Tài liệu: %(document)s được thêm vào thư mục: %(folder)s thành công." + +#: views.py:212 +#, python-format +msgid "Remove from folder request performed on %(count)d document" +msgstr "" + +#: views.py:215 +#, python-format +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "Xóa" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "Cần cung cấp ít nhất một thư mục tài liệu." - -#: views.py:248 +#: views.py:235 #, python-format -msgid "Document: %s removed successfully." -msgstr "Tài liệu: %s đã xóa thành công." +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" -#: views.py:254 -#, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "Tài liệu: %(document)s lỗi xóa: %(error)s" +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" -#: views.py:267 +#: views.py:273 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "" +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/folders/locale/zh_CN/LC_MESSAGES/django.mo index 2ad8193dd4..4b67959fd4 100644 Binary files a/mayan/apps/folders/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/folders/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/folders/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/folders/locale/zh_CN/LC_MESSAGES/django.po index 6f7b1920a3..5bede7a98c 100644 --- a/mayan/apps/folders/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/folders/locale/zh_CN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:54-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -19,8 +19,8 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:33 links.py:16 links.py:44 models.py:45 permissions.py:7 -#: views.py:104 +#: apps.py:33 forms.py:30 links.py:18 menus.py:8 models.py:43 permissions.py:7 +#: views.py:95 msgid "Folders" msgstr "文件夹" @@ -28,51 +28,55 @@ msgstr "文件夹" msgid "Created" msgstr "" -#: apps.py:71 links.py:47 models.py:26 +#: apps.py:71 links.py:56 models.py:24 msgid "Documents" msgstr "文档" -#: forms.py:34 models.py:44 -msgid "Folder" -msgstr "文件夹" - -#: links.py:20 -msgid "Add to a folder" +#: links.py:24 links.py:34 +msgid "Remove from folders" msgstr "" -#: links.py:24 -msgid "Add to folder" +#: links.py:27 +msgid "Add to a folders" msgstr "" -#: links.py:27 views.py:42 +#: links.py:31 +msgid "Add to folders" +msgstr "" + +#: links.py:42 views.py:37 msgid "Create folder" msgstr "" -#: links.py:32 +#: links.py:46 msgid "Delete" msgstr "" -#: links.py:36 -msgid "Remove from folder" -msgstr "" - -#: links.py:40 +#: links.py:49 msgid "Edit" msgstr "" -#: models.py:20 +#: links.py:53 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:23 +#: models.py:21 msgid "Datetime created" msgstr "" -#: models.py:63 +#: models.py:42 +msgid "Folder" +msgstr "文件夹" + +#: models.py:56 msgid "Document folder" msgstr "" -#: models.py:64 +#: models.py:57 msgid "Document folders" msgstr "" @@ -106,65 +110,126 @@ msgstr "" msgid "Primary key of the document to be added." msgstr "" -#: views.py:54 +#: views.py:49 #, python-format #| msgid "Delete new folders" msgid "Delete the folder: %s?" msgstr "" -#: views.py:66 +#: views.py:61 #, python-format msgid "Documents in folder: %s" msgstr "" -#: views.py:93 +#: views.py:84 #, python-format msgid "Edit folder: %s" msgstr "" -#: views.py:127 +#: views.py:116 #, python-format msgid "Folders containing document: %s" msgstr "" -#: views.py:141 -msgid "Must provide at least one document." -msgstr "至少要有一个文档" - -#: views.py:175 +#: views.py:127 #, python-format -msgid "Document: %(document)s added to folder: %(folder)s successfully." -msgstr "文档 %(document)s 成功添加到文件夹: %(folder)s。" +msgid "Add to folder request performed on %(count)d document" +msgstr "" -#: views.py:184 +#: views.py:130 +#, python-format +msgid "Add to folder request performed on %(count)d documents" +msgstr "" + +#: views.py:137 +msgid "Add" +msgstr "新增" + +#: views.py:139 +msgid "Add document to folders" +msgid_plural "Add documents to folders" +msgstr[0] "" + +#: views.py:150 +#, python-format +msgid "Add document \"%s\" to folders" +msgstr "" + +#: views.py:161 +msgid "Folders to which the selected documents will be added." +msgstr "" + +#: views.py:190 #, python-format msgid "Document: %(document)s is already in folder: %(folder)s." msgstr "文档: %(document)s已经存在于文件夹: %(folder)s." -#: views.py:205 -msgid "Add document to folder" -msgid_plural "Add documents to folder" +#: views.py:200 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "文档 %(document)s 成功添加到文件夹: %(folder)s。" + +#: views.py:212 +#, python-format +msgid "Remove from folder request performed on %(count)d document" +msgstr "" + +#: views.py:215 +#, python-format +msgid "Remove from folder request performed on %(count)d documents" +msgstr "" + +#: views.py:222 +msgid "Remove" +msgstr "移除" + +#: views.py:224 +#| msgid "Remove documents from folders" +msgid "Remove document from folders" +msgid_plural "Remove documents from folders" msgstr[0] "" -#: views.py:227 -msgid "Must provide at least one folder document." -msgstr "必须提供至少一个文件夹文档" - -#: views.py:248 +#: views.py:235 #, python-format -msgid "Document: %s removed successfully." -msgstr "文档:%s移除成功" +#| msgid "Remove documents from folders" +msgid "Remove document \"%s\" to folders" +msgstr "" -#: views.py:254 -#, python-format -msgid "Document: %(document)s delete error: %(error)s" -msgstr "文档: %(document)s 删除错误:%(error)s" +#: views.py:246 +msgid "Folders from which the selected documents will be removed." +msgstr "" -#: views.py:267 +#: views.py:273 #, python-format -msgid "Remove the selected document from the folder: %(folder)s?" -msgid_plural "Remove the selected documents from the folder: %(folder)s?" -msgstr[0] "" +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s is not in folder: %(folder)s." +msgstr "" + +#: views.py:282 +#, python-format +#| msgid "Document: %(document)s is already in folder: %(folder)s." +msgid "Document: %(document)s removed from folder: %(folder)s." +msgstr "" + +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Add document to folder" +#~ msgid_plural "Add documents to folder" +#~ msgstr[0] "97c0d1f6a737e93c542fd20ae2682559_pl_0" + +#~ msgid "Must provide at least one folder document." +#~ msgstr "Must provide at least one folder document." + +#~ msgid "Document: %s removed successfully." +#~ msgstr "Document: %s removed successfully." + +#~ msgid "Document: %(document)s delete error: %(error)s" +#~ msgstr "Document: %(document)s delete error: %(error)s" + +#~ msgid "Remove the selected document from the folder: %(folder)s?" +#~ msgid_plural "Remove the selected documents from the folder: %(folder)s?" +#~ msgstr[0] "81c6b0124b038e876c41a6794709629b_pl_0" #~ msgid "A folder named: %s, already exists." #~ msgstr "A folder named: %s, already exists." diff --git a/mayan/apps/folders/tests/test_api.py b/mayan/apps/folders/tests/test_api.py index 333198a4d5..6da4b1b16b 100644 --- a/mayan/apps/folders/tests/test_api.py +++ b/mayan/apps/folders/tests/test_api.py @@ -4,10 +4,9 @@ from django.contrib.auth import get_user_model from django.core.urlresolvers import reverse from django.test import override_settings -from rest_framework.test import APITestCase - from documents.models import DocumentType from documents.tests import TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +from rest_api.tests import BaseAPITestCase from user_management.tests.literals import ( TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME ) @@ -17,12 +16,9 @@ from ..models import Folder from .literals import TEST_FOLDER_EDITED_LABEL, TEST_FOLDER_LABEL -class FolderAPITestCase(APITestCase): - """ - Test the folder API endpoints - """ - +class FolderAPITestCase(BaseAPITestCase): def setUp(self): + super(FolderAPITestCase, self).setUp() self.admin_user = get_user_model().objects.create_superuser( username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD diff --git a/mayan/apps/folders/urls.py b/mayan/apps/folders/urls.py index e8b3496bb9..47ae13b2ec 100644 --- a/mayan/apps/folders/urls.py +++ b/mayan/apps/folders/urls.py @@ -60,7 +60,7 @@ api_urls = [ ), url(r'^folders/$', APIFolderListView.as_view(), name='folder-list'), url( - r'^document/(?P[0-9]+)/folders/$', + r'^documents/(?P[0-9]+)/folders/$', APIDocumentFolderListView.as_view(), name='document-folder-list' ), ] diff --git a/mayan/apps/linking/api_views.py b/mayan/apps/linking/api_views.py new file mode 100644 index 0000000000..9dcbfaf621 --- /dev/null +++ b/mayan/apps/linking/api_views.py @@ -0,0 +1,334 @@ +from __future__ import absolute_import, unicode_literals + +from django.shortcuts import get_object_or_404 + +from rest_framework import generics + +from acls.models import AccessControlList +from documents.models import Document +from documents.permissions import permission_document_view +from rest_api.filters import MayanObjectPermissionsFilter +from rest_api.permissions import MayanPermission + +from .models import SmartLink +from .permissions import ( + permission_smart_link_create, permission_smart_link_delete, + permission_smart_link_edit, permission_smart_link_view +) +from .serializers import ( + ResolvedSmartLinkDocumentSerializer, ResolvedSmartLinkSerializer, + SmartLinkConditionSerializer, SmartLinkSerializer, + WritableSmartLinkSerializer +) + + +class APIResolvedSmartLinkDocumentListView(generics.ListAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = {'GET': (permission_document_view,)} + permission_classes = (MayanPermission,) + serializer_class = ResolvedSmartLinkDocumentSerializer + + def get(self, *args, **kwargs): + """ + Returns a list of the smart link documents that apply to the document. + """ + return super(APIResolvedSmartLinkDocumentListView, self).get( + *args, **kwargs + ) + + def get_document(self): + document = get_object_or_404(Document, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_document_view, user=self.request.user, + obj=document + ) + + return document + + def get_smart_link(self): + smart_link = get_object_or_404( + SmartLink.objects.get_for(document=self.get_document()), + pk=self.kwargs['smart_link_pk'] + ) + + AccessControlList.objects.check_access( + permissions=permission_smart_link_view, user=self.request.user, + obj=smart_link + ) + + return smart_link + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'document': self.get_document(), + 'format': self.format_kwarg, + 'request': self.request, + 'smart_link': self.get_smart_link(), + 'view': self + } + + def get_queryset(self): + return self.get_smart_link().get_linked_document_for( + document=self.get_document() + ) + + +class APIResolvedSmartLinkView(generics.RetrieveAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + lookup_url_kwarg = 'smart_link_pk' + mayan_object_permissions = {'GET': (permission_smart_link_view,)} + permission_classes = (MayanPermission,) + serializer_class = ResolvedSmartLinkSerializer + + def get(self, *args, **kwargs): + """ + Return the details of the selected resolved smart link. + """ + return super(APIResolvedSmartLinkView, self).get(*args, **kwargs) + + def get_document(self): + document = get_object_or_404(Document, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_document_view, user=self.request.user, + obj=document + ) + + return document + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'document': self.get_document(), + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } + + def get_queryset(self): + return SmartLink.objects.get_for(document=self.get_document()) + + +class APIResolvedSmartLinkListView(generics.ListAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = {'GET': (permission_smart_link_view,)} + permission_classes = (MayanPermission,) + serializer_class = ResolvedSmartLinkSerializer + + def get(self, *args, **kwargs): + """ + Returns a list of the smart links that apply to the document. + """ + return super(APIResolvedSmartLinkListView, self).get(*args, **kwargs) + + def get_document(self): + document = get_object_or_404(Document, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_document_view, user=self.request.user, + obj=document + ) + + return document + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'document': self.get_document(), + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } + + def get_queryset(self): + return SmartLink.objects.filter( + document_types=self.get_document().document_type + ) + + +class APISmartLinkConditionListView(generics.ListCreateAPIView): + serializer_class = SmartLinkConditionSerializer + + def get(self, *args, **kwargs): + """ + Returns a list of all the smart link conditions. + """ + return super(APISmartLinkConditionListView, self).get(*args, **kwargs) + + def get_queryset(self): + return self.get_smart_link().conditions.all() + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'format': self.format_kwarg, + 'request': self.request, + 'smart_link': self.get_smart_link(), + 'view': self + } + + def get_smart_link(self): + if self.request.method == 'GET': + permission_required = permission_smart_link_view + else: + permission_required = permission_smart_link_edit + + smart_link = get_object_or_404(SmartLink, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_required, user=self.request.user, + obj=smart_link + ) + + return smart_link + + def post(self, *args, **kwargs): + """ + Create a new smart link condition. + """ + return super(APISmartLinkConditionListView, self).post(*args, **kwargs) + + +class APISmartLinkConditionView(generics.RetrieveUpdateDestroyAPIView): + lookup_url_kwarg = 'condition_pk' + serializer_class = SmartLinkConditionSerializer + + def delete(self, *args, **kwargs): + """ + Delete the selected smart link condition. + """ + + return super(APISmartLinkConditionView, self).delete(*args, **kwargs) + + def get(self, *args, **kwargs): + """ + Return the details of the selected smart link condition. + """ + + return super(APISmartLinkConditionView, self).get(*args, **kwargs) + + def get_queryset(self): + return self.get_smart_link().conditions.all() + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + return { + 'format': self.format_kwarg, + 'request': self.request, + 'smart_link': self.get_smart_link(), + 'view': self + } + + def get_smart_link(self): + if self.request.method == 'GET': + permission_required = permission_smart_link_view + else: + permission_required = permission_smart_link_edit + + smart_link = get_object_or_404(SmartLink, pk=self.kwargs['pk']) + + AccessControlList.objects.check_access( + permissions=permission_required, user=self.request.user, + obj=smart_link + ) + + return smart_link + + def patch(self, *args, **kwargs): + """ + Edit the selected smart link condition. + """ + + return super(APISmartLinkConditionView, self).patch(*args, **kwargs) + + def put(self, *args, **kwargs): + """ + Edit the selected smart link condition. + """ + + return super(APISmartLinkConditionView, self).put(*args, **kwargs) + + +class APISmartLinkListView(generics.ListCreateAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = {'GET': (permission_smart_link_view,)} + mayan_view_permissions = {'POST': (permission_smart_link_create,)} + permission_classes = (MayanPermission,) + queryset = SmartLink.objects.all() + + def get(self, *args, **kwargs): + """ + Returns a list of all the smart links. + """ + + return super(APISmartLinkListView, self).get(*args, **kwargs) + + def get_serializer_class(self): + if self.request.method == 'GET': + return SmartLinkSerializer + else: + return WritableSmartLinkSerializer + + def post(self, *args, **kwargs): + """ + Create a new smart link. + """ + + return super(APISmartLinkListView, self).post(*args, **kwargs) + + +class APISmartLinkView(generics.RetrieveUpdateDestroyAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = { + 'DELETE': (permission_smart_link_delete,), + 'GET': (permission_smart_link_view,), + 'PATCH': (permission_smart_link_edit,), + 'PUT': (permission_smart_link_edit,) + } + queryset = SmartLink.objects.all() + + def delete(self, *args, **kwargs): + """ + Delete the selected smart link. + """ + + return super(APISmartLinkView, self).delete(*args, **kwargs) + + def get(self, *args, **kwargs): + """ + Return the details of the selected smart ink. + """ + + return super(APISmartLinkView, self).get(*args, **kwargs) + + def get_serializer_class(self): + if self.request.method == 'GET': + return SmartLinkSerializer + else: + return WritableSmartLinkSerializer + + def patch(self, *args, **kwargs): + """ + Edit the selected smart link. + """ + + return super(APISmartLinkView, self).patch(*args, **kwargs) + + def put(self, *args, **kwargs): + """ + Edit the selected smart link. + """ + + return super(APISmartLinkView, self).put(*args, **kwargs) diff --git a/mayan/apps/linking/apps.py b/mayan/apps/linking/apps.py index 54250c85e4..82403ae1ca 100644 --- a/mayan/apps/linking/apps.py +++ b/mayan/apps/linking/apps.py @@ -12,6 +12,7 @@ from common import ( ) from common.widgets import two_state_template from navigation import SourceColumn +from rest_api.classes import APIEndPoint from .links import ( link_smart_link_create, link_smart_link_condition_create, @@ -28,13 +29,15 @@ from .permissions import ( class LinkingApp(MayanAppConfig): + has_tests = True name = 'linking' - test = True verbose_name = _('Linking') def ready(self): super(LinkingApp, self).ready() + APIEndPoint(app=self, version_string='1') + Document = apps.get_model( app_label='documents', model_name='Document' ) diff --git a/mayan/apps/linking/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/ar/LC_MESSAGES/django.mo index 7a4b4bb3b1..8298a705da 100644 Binary files a/mayan/apps/linking/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/ar/LC_MESSAGES/django.po b/mayan/apps/linking/locale/ar/LC_MESSAGES/django.po index 7c0faec79f..192fc4e710 100644 --- a/mayan/apps/linking/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/ar/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -19,23 +19,23 @@ msgstr "" "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" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -55,11 +55,11 @@ msgstr "تحرير" msgid "Conditions" msgstr "" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "إنشاء ارتباط ذكي جديد" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "" @@ -67,8 +67,8 @@ msgstr "" msgid "Documents" msgstr "الوثائق" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "الروابط الذكية" @@ -140,55 +140,55 @@ msgstr "is in regular expression" msgid "is in regular expression (case insensitive)" msgstr "is in regular expression (case insensitive)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "يتم تجاهل الإدراج للغرض الأول." -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Inverts the logic of the operator." -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "not" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -208,65 +208,76 @@ msgstr "حذف الروابط الذكية" msgid "Edit smart links" msgstr "تحرير الروابط الذكية" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "خطأ بالاستعلام عن الرابط الذكي: %s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "تحرير الرابط الذكي: %s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "أضف شرط جديد للرابط الذكي: \"%s\"" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "تحرير شرط الرابط الذكي" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/bg/LC_MESSAGES/django.mo index 5bd142a5bb..b97f70a206 100644 Binary files a/mayan/apps/linking/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/bg/LC_MESSAGES/django.po b/mayan/apps/linking/locale/bg/LC_MESSAGES/django.po index 7ea2d74596..7392080b3d 100644 --- a/mayan/apps/linking/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/bg/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -19,23 +19,23 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -55,11 +55,11 @@ msgstr "Редактиране" msgid "Conditions" msgstr "" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "" @@ -67,8 +67,8 @@ msgstr "" msgid "Documents" msgstr "Документи" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "" @@ -140,55 +140,55 @@ msgstr "" msgid "is in regular expression (case insensitive)" msgstr "" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "" -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "" -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "не" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -208,65 +208,76 @@ msgstr "" msgid "Edit smart links" msgstr "" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/bs_BA/LC_MESSAGES/django.mo index 47f0f219f5..79741442d8 100644 Binary files a/mayan/apps/linking/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/linking/locale/bs_BA/LC_MESSAGES/django.po index 0f44c3592b..fbc0698629 100644 --- a/mayan/apps/linking/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/bs_BA/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -19,23 +19,23 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -55,11 +55,11 @@ msgstr "Urediti" msgid "Conditions" msgstr "" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "Kreiraj novi smart link" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "" @@ -67,8 +67,8 @@ msgstr "" msgid "Documents" msgstr "Dokumenti" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "Smart linkovi" @@ -140,55 +140,55 @@ msgstr "je u regularnom izrazu" msgid "is in regular expression (case insensitive)" msgstr "je u regularnom izrazu (nije bitno velika ili mala slova)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "Inkluzija je ignorisana za prvu stavku" -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Obrće logiku operatora" -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "ne" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -208,65 +208,76 @@ msgstr "Obrisati smart linkove" msgid "Edit smart links" msgstr "Izmjeni smart linkove" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "Greška smart link upita: %s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "Izmjeni smart link: %s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "Dodati nove uslove za smart link: \"%s\"" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "Izmjeniti uslove smart linka" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/da/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/da/LC_MESSAGES/django.mo index ddbb8e9cd5..a8380c62ae 100644 Binary files a/mayan/apps/linking/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/da/LC_MESSAGES/django.po b/mayan/apps/linking/locale/da/LC_MESSAGES/django.po index d43088399a..0221a79bef 100644 --- a/mayan/apps/linking/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/da/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -18,23 +18,23 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -54,11 +54,11 @@ msgstr "" msgid "Conditions" msgstr "" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "" @@ -66,8 +66,8 @@ msgstr "" msgid "Documents" msgstr "Dokumenter" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "" @@ -139,55 +139,55 @@ msgstr "" msgid "is in regular expression (case insensitive)" msgstr "" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "" -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "" -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -207,65 +207,76 @@ msgstr "" msgid "Edit smart links" msgstr "" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/de_DE/LC_MESSAGES/django.mo index 7293864310..065b19caf8 100644 Binary files a/mayan/apps/linking/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/linking/locale/de_DE/LC_MESSAGES/django.po index 3ed5cd7193..aa969323fe 100644 --- a/mayan/apps/linking/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/de_DE/LC_MESSAGES/django.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" @@ -22,23 +22,23 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "Verknüpfungen" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "Bezeichnung" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "Dynamische Bezeichnung" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "Aktiviert" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "Fremddokumentattribut" @@ -58,11 +58,11 @@ msgstr "Bearbeiten" msgid "Conditions" msgstr "Bedingungen" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "Smart Link erstellen" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "Dokumententypen" @@ -70,8 +70,8 @@ msgstr "Dokumententypen" msgid "Documents" msgstr "Dokumente" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "Ähnliche Dokumente" @@ -143,55 +143,55 @@ msgstr "ist in regulärem Ausdruck" msgid "is in regular expression (case insensitive)" msgstr "ist in regulärem Ausdruck (ohne Groß/Kleinschreibung)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "Eine Vorlage zur Verarbeitung eingeben (Django Standard Templating Sprache (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). Die {{ document }} Kontextvariable ist verfügbar." -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "Fehler bei der Generierung des dynamischen Titels: %s" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "Dieser Smart Link ist nicht erlaubt für diesen Dokumententyp" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "Smart Link" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "Die Einbeziehung wird für das erste Element ignoriert." -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "Repräsentiert die Metadaten aller anderen Dokumente" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "Ausdruck" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Kehrt die Logik der Operation um." -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "Verneint" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "Nicht" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "Bedingung" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "Bedingungen" @@ -211,65 +211,76 @@ msgstr "Smart Links löschen" msgid "Edit smart links" msgstr "Smart Links bearbeiten" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "Abfragefehler für Smart Link %s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "Ähnliche Dokumente für %s" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "Dokumente in Smart Link \"%(smart_link)s\" verknüpft zu \"%(document)s\"" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "Verfügbare Dokumententypen" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "Aktivierte Dokumententypen" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "Dokumententyp, für den Smart Link %s aktiviert werden soll" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "Ähnliche Dokumente für Dokument %s" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "Smart Link %s bearbeiten" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "Smart Link %s wirklich löschen?" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "Bedingungen für Smart Link %s" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "Neue Bedingungen zu Smart Link \"%s\" hinzufügen" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "Bedingung für Smart Link bearbeiten" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/en/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/en/LC_MESSAGES/django.mo index 2dc9524097..a8860895fc 100644 Binary files a/mayan/apps/linking/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/en/LC_MESSAGES/django.po b/mayan/apps/linking/locale/en/LC_MESSAGES/django.po index 01b93212bf..ac40d29227 100644 --- a/mayan/apps/linking/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2012-12-12 06:06+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,25 +18,25 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 #, fuzzy msgid "Dynamic label" msgstr "dynamic title" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 #, fuzzy msgid "Enabled" msgstr "enabled" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 #, fuzzy msgid "Foreign document attribute" msgstr "foreign document data" @@ -60,11 +60,11 @@ msgstr "" msgid "Conditions" msgstr "conditions" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "Create new smart link" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "" @@ -72,8 +72,8 @@ msgstr "" msgid "Documents" msgstr "" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "Smart links" @@ -145,59 +145,59 @@ msgstr "is in regular expression" msgid "is in regular expression (case insensitive)" msgstr "is in regular expression (case insensitive)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The " "{{ document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 #, fuzzy msgid "Smart link" msgstr "Smart links" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "The inclusion is ignored for the first item." -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 #, fuzzy msgid "Expression" msgstr "expression" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Inverts the logic of the operator." -#: models.py:122 +#: models.py:125 #, fuzzy msgid "Negated" msgstr "negated" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "not" -#: models.py:134 +#: models.py:137 #, fuzzy msgid "Link condition" msgstr "link condition" -#: models.py:135 +#: models.py:138 #, fuzzy msgid "Link conditions" msgstr "link conditions" @@ -218,66 +218,77 @@ msgstr "Delete smart links" msgid "Edit smart links" msgstr "Edit smart links" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "Smart link query error: %s" -#: views.py:78 +#: views.py:68 #, fuzzy, python-format msgid "Documents in smart link: %s" msgstr "documents in smart link: %(group)s" -#: views.py:81 +#: views.py:71 #, fuzzy, python-format msgid "" "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "Error deleting smart link: %(smart_link)s; %(error)s." -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, fuzzy, python-format msgid "Document type for which to enable smart link: %s" msgstr "Are you sure you wish to delete smart link: %s?" -#: views.py:173 +#: views.py:159 #, fuzzy, python-format msgid "Smart links for document: %s" msgstr "smart links (%s)" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "Edit smart link: %s" -#: views.py:210 +#: views.py:194 #, fuzzy, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "Delete smart links" -#: views.py:222 +#: views.py:206 #, fuzzy, python-format msgid "Conditions for smart link: %s" msgstr "conditions for smart link: %s" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "Add new conditions to smart link: \"%s\"" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "Edit smart link condition" -#: views.py:334 +#: views.py:304 #, fuzzy, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/es/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/es/LC_MESSAGES/django.mo index c56a9611a7..c050b5e561 100644 Binary files a/mayan/apps/linking/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/es/LC_MESSAGES/django.po b/mayan/apps/linking/locale/es/LC_MESSAGES/django.po index c8a4ba799e..f52e241b9b 100644 --- a/mayan/apps/linking/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/es/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-05-09 01:40+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -21,23 +21,23 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "Enlaces" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "Etiqueta" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "Etiqueta dinámica" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "Habilitado" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "Datos de documento foráneo" @@ -57,11 +57,11 @@ msgstr "Editar" msgid "Conditions" msgstr "Condiciones" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "Crear un enlace inteligente nuevo" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "Tipos de documento" @@ -69,8 +69,8 @@ msgstr "Tipos de documento" msgid "Documents" msgstr "Documentos" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "Enlaces inteligentes" @@ -142,55 +142,55 @@ msgstr "está en la expresión regular" msgid "is in regular expression (case insensitive)" msgstr "está en la expresión regular (no sensible a mayúsculas)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "Introduzca una plantilla para generar. Use el lenguaje de plantillas de Django (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). La variable {{ document }} está disponible en el contexto de la plantilla." -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "Error generando etiqueta dinámica; %s" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "Este enlace inteligente no está permitido para el tipo de documento seleccionado." -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "Enlace inteligente" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "La inclusión es ignorada para el primer artículo." -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "Esto representa los meta datos de los documentos foráneos." -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "Expresión" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Invierte la lógica del operador." -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "Negado" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "no" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "Condición de enlace" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "Condiciones de enlace" @@ -210,65 +210,76 @@ msgstr "Eliminar enlaces inteligentes" msgid "Edit smart links" msgstr "Editar enlaces inteligentes" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "Error en consulta de enlace inteligente: %s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "Documentos en enlace inteligente: %s" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "Los documentos en enlace inteligente \"%(smart_link)s\" en relación con \"%(document)s\"" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "Tipos de documentos disponibles" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "Tipos de documentos seleccionados" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "Tipo de documento para el cual habilitar el enlace inteligente: %s" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "Enlaces inteligentes para el documento: %s" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "Editar enlace inteligente: %s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "Borrar enlace inteligente: %s" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "Condiciones para enlace inteligente: %s" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "Añadir nuevas condiciones de enlace inteligente: \"%s\"" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "Editar condición de enlace inteligente" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/fa/LC_MESSAGES/django.mo index 751488f12a..1cb0d1c52c 100644 Binary files a/mayan/apps/linking/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/fa/LC_MESSAGES/django.po b/mayan/apps/linking/locale/fa/LC_MESSAGES/django.po index 95490a2616..8798334ef2 100644 --- a/mayan/apps/linking/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/fa/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -19,23 +19,23 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "برچسب" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "فعال شده" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "مختصات سند خارجی" @@ -55,11 +55,11 @@ msgstr "ویرایش" msgid "Conditions" msgstr "شرایط" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "ایجاد پیوند هوشمند جدید" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "انواع مستندات" @@ -67,8 +67,8 @@ msgstr "انواع مستندات" msgid "Documents" msgstr "مستندات" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "پیوند هوشمند" @@ -140,55 +140,55 @@ msgstr "موجود در عبارات منظم" msgid "is in regular expression (case insensitive)" msgstr "موجود در عبارات منظم (case insensitive)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "این لینک هوشمند برای نوع سند منتخب مجاز نیست" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "پیوند هوشمند" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "ورود اولین آیتم در نطر گرفته نشد." -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "این مورد نشانگر متا داده تمامی اسناد می باشد." -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "عبارت" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "منطق عملگر را برعکس میکند." -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "منفی شده" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "نه " -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "شرط پیوند" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "شرایط پیوند" @@ -208,65 +208,76 @@ msgstr "حذف پیوند هوشمند " msgid "Edit smart links" msgstr "ویرایش پیوند هوشمند " -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "خطای پرسش query از پیوند هوشمند : %s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "اسناد در لینک هوشمند: %s" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "نوع سند برای فعالسازی لینک هوشمند: %s" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "ارتباطات هوشمند برای سند :%s" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "ویرایش پیوند هوشمند %s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "شرایط پیوند هوشمند : %s" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "اضافه کردن شرط جدید به پیوند هوشمند \"%s\"" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "ویرایش شرط پیوند هوشمند \"%s\"" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/fr/LC_MESSAGES/django.mo index d0d811bbc9..913f9600de 100644 Binary files a/mayan/apps/linking/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/fr/LC_MESSAGES/django.po b/mayan/apps/linking/locale/fr/LC_MESSAGES/django.po index 69d42feab8..3f847002fd 100644 --- a/mayan/apps/linking/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/fr/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" @@ -20,23 +20,23 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "Liaison" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "Libellé" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "Etiquette dynamique" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "Activé" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "Attribut étranger du document " @@ -56,11 +56,11 @@ msgstr "Modifier" msgid "Conditions" msgstr "Conditions" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "Céer un nouveau lien intelligent" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "Types de document" @@ -68,8 +68,8 @@ msgstr "Types de document" msgid "Documents" msgstr "Documents" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "Liens intelligents" @@ -141,55 +141,55 @@ msgstr "est une expression régulière" msgid "is in regular expression (case insensitive)" msgstr "est une expression régulière (insensible à la casse)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "Indiquez un modèle à restituer. Utilise le langage de rendu de Django par défaut (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). La variable de contexte {{ document }} est disponible." -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "Erreur de génération de l'étiquette dynamique : %s" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "Un lien intelligent n'est pas autorisé pour le type de document sélectionné." -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "Lien intelligent" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "Ignorer l'inclusion sur le premier élément" -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "Ceci représente la méta-donnée de tous les autres documents." -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "Expression" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Inverser l'opérateur logique" -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "Négation" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "ne pas" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "Condition sur le lien" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "Conditions sur le lien" @@ -209,65 +209,76 @@ msgstr "Supprimer les liens intelligents" msgid "Edit smart links" msgstr "Modifier les liens intelligents" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "Erreur de requête sur lien intelligent:%s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "Lien inetlligent du document: %s" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "Documents du lien intelligent \"%(smart_link)s\" en relation avec \"%(document)s\"" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "Types de document disponible" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "Types de documents actifs" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "Type de document sur lesquels activer les liens intelligents: %s" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "Liens intelligents pour le document: %s" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "Modifier le lien intelligent:%s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "Supprimer le lien intelligent : %s" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "Conditions sur le lien intelligent: %s" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "Ajouter une nouvelle condition au lien intelligent:\"%s\"" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "Modifier la condition sur le lien intelligent" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/hu/LC_MESSAGES/django.mo index 3ea7887c18..f8bcef2466 100644 Binary files a/mayan/apps/linking/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/hu/LC_MESSAGES/django.po b/mayan/apps/linking/locale/hu/LC_MESSAGES/django.po index bbe5bb1871..d74a8bba39 100644 --- a/mayan/apps/linking/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/hu/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -18,23 +18,23 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -54,11 +54,11 @@ msgstr "" msgid "Conditions" msgstr "" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "" @@ -66,8 +66,8 @@ msgstr "" msgid "Documents" msgstr "dokumentumok" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "" @@ -139,55 +139,55 @@ msgstr "" msgid "is in regular expression (case insensitive)" msgstr "" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "" -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "" -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -207,65 +207,76 @@ msgstr "" msgid "Edit smart links" msgstr "" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/id/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/id/LC_MESSAGES/django.mo index 6d018cc2d6..d32f480961 100644 Binary files a/mayan/apps/linking/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/id/LC_MESSAGES/django.po b/mayan/apps/linking/locale/id/LC_MESSAGES/django.po index 4dfd49a886..54af185f05 100644 --- a/mayan/apps/linking/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,23 +18,23 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -54,11 +54,11 @@ msgstr "" msgid "Conditions" msgstr "" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "" @@ -66,8 +66,8 @@ msgstr "" msgid "Documents" msgstr "Dokumen" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "" @@ -139,55 +139,55 @@ msgstr "" msgid "is in regular expression (case insensitive)" msgstr "" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "" -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "" -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -207,65 +207,76 @@ msgstr "" msgid "Edit smart links" msgstr "" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/it/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/it/LC_MESSAGES/django.mo index 06d9b9a6d4..e6f26035d5 100644 Binary files a/mayan/apps/linking/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/it/LC_MESSAGES/django.po b/mayan/apps/linking/locale/it/LC_MESSAGES/django.po index 7a91f099b4..e844fcedae 100644 --- a/mayan/apps/linking/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/it/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-09-24 10:31+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,23 +20,23 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "Collegamento" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "Etichetta" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "Etichetta dinamica" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "Abilitato" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "Attributo documento esterno" @@ -56,11 +56,11 @@ msgstr "Modifica" msgid "Conditions" msgstr "Condizioni" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "Crea un nuovo link intelligente" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "Tipi di documento" @@ -68,8 +68,8 @@ msgstr "Tipi di documento" msgid "Documents" msgstr "Documenti" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "Link intelligenti" @@ -141,55 +141,55 @@ msgstr "è un'espressione regolare" msgid "is in regular expression (case insensitive)" msgstr "è un'espressione regolare (case insensitive)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "Inserisci il template da renderizzare. Usa il linguaggio di template di Django (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). Variabili di contesto disponibili: {{ document }} " -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "Errore generando l'etichetta dinamica; %s" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "Questo link intelligente non è consentito per questo tipo di documento." -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "Link intelligente" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "L'inserimento viene ignorato per la prima voce." -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "Questo rappresenta i metadati degli altri documenti." -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "Espressione" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Inverti la logica dell'operazione" -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "Negato" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "not" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "Condizione link" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "Condizioni link" @@ -209,65 +209,76 @@ msgstr "Cancella link intelligenti" msgid "Edit smart links" msgstr "Modifica link intelligenti" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "Interrogazione dei link intelligenti, errore: %s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "Documenti nel link intelligente: %s" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "Documenti nel link intelligente: \"%(smart_link)s\" è correlato con \"%(document)s\"" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "Tipi di documento disponibili" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "Tipi documento abilitati" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "Tipo di documento per il quale attivare collegamento intelligente: %s" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "Collegamenti intelligenti per il documento: %s" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "Modifica il link intelligente: %s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "Cancella collegamento intelligente: %s" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "Condizioni per il collegamento intelligente: %s" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "Aggiungi una nuova condizione al link intelligente: \"%s\"" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "Modifica condizioni per i link intelligenti" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/nl_NL/LC_MESSAGES/django.mo index da52ed4221..81fe50b18c 100644 Binary files a/mayan/apps/linking/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/linking/locale/nl_NL/LC_MESSAGES/django.po index 1c84a40b76..c1a72cb8ee 100644 --- a/mayan/apps/linking/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/nl_NL/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-11-09 15:56+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,23 +20,23 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "Koppeling" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "Label" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "Dynamisch label" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "Ingeschakeld" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -56,11 +56,11 @@ msgstr "bewerken" msgid "Conditions" msgstr "Conditie" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "Nieuwe 'smartlink' aanmaken" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "Documentsoorten" @@ -68,8 +68,8 @@ msgstr "Documentsoorten" msgid "Documents" msgstr "Documenten" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "'Smartlinks'" @@ -141,55 +141,55 @@ msgstr "komt overeen met 'reguliere expressie'" msgid "is in regular expression (case insensitive)" msgstr "komt overeen met 'reguliere expressie (hoofdletter ongevoelig)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "Slimme link" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "De berekening is genegeerd voor het eerste item" -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "Uitdrukking" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Inverteerd de operatorlogica" -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "niet" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -209,65 +209,76 @@ msgstr "Verwijderen 'smartlinks'" msgid "Edit smart links" msgstr "Verwijderen 'smartlinks'" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "'smartlink' zoek fout: %s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "Beschikbare documentsoorten" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "'smartlink': %s bewerken." -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "Nieuwe condities aan 'smartlink': \"%s\" toevoegen." -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "Bewerk 'smartlink' conditie." -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/pl/LC_MESSAGES/django.mo index 7e338b92e4..a8e6ce2752 100644 Binary files a/mayan/apps/linking/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/pl/LC_MESSAGES/django.po b/mayan/apps/linking/locale/pl/LC_MESSAGES/django.po index f26283a1a3..cfb807e1c9 100644 --- a/mayan/apps/linking/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/pl/LC_MESSAGES/django.po @@ -10,33 +10,33 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "Łącza" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "Etykieta" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "Dynamiczna etykieta" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "Włączony" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "Atrybut obcego dokumentu" @@ -56,11 +56,11 @@ msgstr "Edytuj" msgid "Conditions" msgstr "Warunki" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "Utwórz nowe łącze" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "Typy dokumentów" @@ -68,8 +68,8 @@ msgstr "Typy dokumentów" msgid "Documents" msgstr "Dokumenty" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "Łącza" @@ -141,55 +141,55 @@ msgstr "jest w wyrażeniu regularnym" msgid "is in regular expression (case insensitive)" msgstr "jest w wyrażeniu regularnym (wielkość liter ma znaczenie)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "Podaj szablon do wyrenderowania. Użyj domyślnego języka szablonów Django (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). Zmienna kontekstowa {{ document }} jest dostępna." -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "Błąd podczas generowania dynamicznej etykiety: %s" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "To łącze nie jest dostępne dla wybranego typu dokumentu." -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "Łącze" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "To wliczenie jest ignorowane dla pierwszego elementu." -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "To odpowiada meta danym wszystkich pozostałych dokumentów." -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "Wyrażenie" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Odwraca logikę operatora." -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "Zanegowany" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "nie" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "Warunek łącza" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "Warunki łącza" @@ -209,65 +209,76 @@ msgstr "Usuń łącza" msgid "Edit smart links" msgstr "Edytuj łącza" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "Błąd zapytania o łącze: %s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "Dokumenty w łączu: %s" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "Dokumenty w łączu \"%(smart_link)s\" powiązane z \"%(document)s\"" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "Dostępne typy dokumentów" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "Typy dokumentów z udostępnionym łączem" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "Typy dokumentów, dla których zostanie udostępnione łącze: %s" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "Łącza dla dokumentu: %s" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "Edytuj łącze: %s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "Usuń łącze: %s" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "Warunki łącza: %s" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "Dodaj nowe warunki do łącza: \"%s\"" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "Edycja warunku łącza" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/pt/LC_MESSAGES/django.mo index d2e09912e2..e2d31cffd2 100644 Binary files a/mayan/apps/linking/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/pt/LC_MESSAGES/django.po b/mayan/apps/linking/locale/pt/LC_MESSAGES/django.po index 15ca42fe00..53b67941ae 100644 --- a/mayan/apps/linking/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/pt/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -21,23 +21,23 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "Nome" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -57,11 +57,11 @@ msgstr "Editar" msgid "Conditions" msgstr "" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "Criar nova ligação inteligente" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "" @@ -69,8 +69,8 @@ msgstr "" msgid "Documents" msgstr "Documentos" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "Ligações inteligentes" @@ -142,55 +142,55 @@ msgstr "contido em expressão regular" msgid "is in regular expression (case insensitive)" msgstr "contido em expressão regular (insensível a minúsculas/maiúsculas)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "A inclusão é ignorada para o primeiro item." -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Inverte a lógica do operador." -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "não" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -210,65 +210,76 @@ msgstr "Excluir ligações inteligentes" msgid "Edit smart links" msgstr "Editar ligações inteligentes" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "Erro na consulta de ligações inteligentes: %s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "Editar Ligação inteligente: %s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "Adicionar novas condições à ligação inteligente: \"%s\"" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "Editar condição de ligação inteligente" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/pt_BR/LC_MESSAGES/django.mo index 291998338c..cafe8e8b0e 100644 Binary files a/mayan/apps/linking/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/linking/locale/pt_BR/LC_MESSAGES/django.po index 368c5190ce..1849ac120e 100644 --- a/mayan/apps/linking/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/pt_BR/LC_MESSAGES/django.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-11-17 23:07+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,23 +22,23 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "Ligações" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "Label" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "Etiqueta dinâmica" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "habilitado" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "Atributo documento externo" @@ -58,11 +58,11 @@ msgstr "Editar" msgid "Conditions" msgstr "condições" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "Criar novo link inteligente" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "Tipo de Documento" @@ -70,8 +70,8 @@ msgstr "Tipo de Documento" msgid "Documents" msgstr "Documentos" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "Ligações inteligentes" @@ -143,55 +143,55 @@ msgstr "está em expressão regular" msgid "is in regular expression (case insensitive)" msgstr "está em expressão regular (case insensitive)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "Introduza um template para renderizar. Use a linguagem de templates padrão do Django (https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). A variável {{ document }} está disponível. " -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "Erro gerando etiqueta dinâmica; %s" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "Este link inteligente não é permitido para o tipo de documento selecionado. " -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "link inteligente" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "A inclusão é ignorada para o primeiro item." -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "Esta expressão será avaliada contra o documento atual." -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "expressão" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Inverte a lógica do operador." -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "negada" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "não" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "condição de ligação" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "condições de ligação" @@ -211,65 +211,76 @@ msgstr "Excluir ligações inteligentes" msgid "Edit smart links" msgstr "Editar ligações inteligentes" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "Erro Links Inteligentes para documento: %s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "Os documentos em referência inteligente: %s " -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "Os documentos em link inteligente \"%(smart_link)s\" em relação com \"%(document)s\"" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "Tipos de documentos disponíveis" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "Tipos de documentos habilitados" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "Tipo de documento para o qual a permitir ligação inteligente: %s" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "Links Inteligentes para documento: %s" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "Editar Ligação inteligente: %s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "Apagar link inteligente: %s" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "Condições para a ligação inteligente: %s criado com sucesso." -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "Adiciona novas condições para a ligação inteligente: %s " -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "Editar condição de ligação Inteligente" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/ro_RO/LC_MESSAGES/django.mo index 56b85aa338..5525f35bbc 100644 Binary files a/mayan/apps/linking/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/linking/locale/ro_RO/LC_MESSAGES/django.po index 22ca9f229b..be3e36ae00 100644 --- a/mayan/apps/linking/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/ro_RO/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-04-17 09:43+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -19,23 +19,23 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "Etichetă" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -55,11 +55,11 @@ msgstr "Editează" msgid "Conditions" msgstr "" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "Creați un nou link inteligent" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "" @@ -67,8 +67,8 @@ msgstr "" msgid "Documents" msgstr "Documente" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "Link-uri inteligente" @@ -140,55 +140,55 @@ msgstr "este în expresie regulată" msgid "is in regular expression (case insensitive)" msgstr "este în expresie regulată (case insensitive)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "Includerea este ignorată pentru primul element." -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Inversează logica operatorului." -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "nu" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -208,65 +208,76 @@ msgstr "Ștergeți link-uri inteligente" msgid "Edit smart links" msgstr "Editați link-uri inteligente" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "Eroare interogare link-ul:% s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "Editare legătură inteligentă:% s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "Adauga la noile condiții de legătură inteligentă: \"%s\"" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "Editați condiție legătură inteligentă" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/ru/LC_MESSAGES/django.mo index cc892430f8..e79fef0921 100644 Binary files a/mayan/apps/linking/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/ru/LC_MESSAGES/django.po b/mayan/apps/linking/locale/ru/LC_MESSAGES/django.po index 7a6846669d..570f4d08ae 100644 --- a/mayan/apps/linking/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/ru/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-11-02 04:15+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" @@ -18,23 +18,23 @@ msgstr "" "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" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "Связывание" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "Надпись" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "Доступно" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -54,11 +54,11 @@ msgstr "Редактировать" msgid "Conditions" msgstr "" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "Создать новое отношение" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "Типы документов" @@ -66,8 +66,8 @@ msgstr "Типы документов" msgid "Documents" msgstr "Документы" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "Отношения" @@ -139,55 +139,55 @@ msgstr "В регулярном выражении" msgid "is in regular expression (case insensitive)" msgstr "В регулярном выражении (без учета регистра)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "Включение игнорируется для первого элемента." -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "Инвертирует логику оператора." -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "не" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -207,65 +207,76 @@ msgstr "Удалить отношения" msgid "Edit smart links" msgstr "Редактировать отношения" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "Ошибка запроса в отношении %s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "Доступные типы документов" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "Редактировать отношение %s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "Добавить новые условия отношения \"%s\"" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "Изменить условие отношения" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/sl_SI/LC_MESSAGES/django.mo index e620cd4324..6e939825bc 100644 Binary files a/mayan/apps/linking/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/linking/locale/sl_SI/LC_MESSAGES/django.po index 646079185c..83e60b14ac 100644 --- a/mayan/apps/linking/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-11-17 08:59+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,23 +18,23 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "Oznaka" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -54,11 +54,11 @@ msgstr "" msgid "Conditions" msgstr "" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "" @@ -66,8 +66,8 @@ msgstr "" msgid "Documents" msgstr "Dokumenti" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "" @@ -139,55 +139,55 @@ msgstr "" msgid "is in regular expression (case insensitive)" msgstr "" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "" -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "" -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -207,65 +207,76 @@ msgstr "" msgid "Edit smart links" msgstr "" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/vi_VN/LC_MESSAGES/django.mo index 1b11313613..0fdc96a1fb 100644 Binary files a/mayan/apps/linking/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/linking/locale/vi_VN/LC_MESSAGES/django.po index 28ddce969b..e18349a8c9 100644 --- a/mayan/apps/linking/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/vi_VN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -19,23 +19,23 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -55,11 +55,11 @@ msgstr "Sửa" msgid "Conditions" msgstr "" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "" @@ -67,8 +67,8 @@ msgstr "" msgid "Documents" msgstr "Tài liệu" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "Liên kết thông minh" @@ -140,55 +140,55 @@ msgstr "" msgid "is in regular expression (case insensitive)" msgstr "" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "" -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "" -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -208,65 +208,76 @@ msgstr "Xóa liên kết thông minh" msgid "Edit smart links" msgstr "Sửa liên kết thông minh" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "Lỗi truy vấn liên kết thông minh: %s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "Sửa liên kết thông minh: %s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/linking/locale/zh_CN/LC_MESSAGES/django.mo index bf81964d9b..7994c6a355 100644 Binary files a/mayan/apps/linking/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/linking/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/linking/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/linking/locale/zh_CN/LC_MESSAGES/django.po index d607aedd2c..cc674043eb 100644 --- a/mayan/apps/linking/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/linking/locale/zh_CN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:10+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -19,23 +19,23 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:33 +#: apps.py:34 msgid "Linking" msgstr "" -#: apps.py:55 models.py:18 +#: apps.py:58 models.py:19 msgid "Label" msgstr "" -#: apps.py:62 models.py:25 +#: apps.py:65 models.py:26 msgid "Dynamic label" msgstr "" -#: apps.py:66 apps.py:71 models.py:27 models.py:124 +#: apps.py:69 apps.py:74 models.py:28 models.py:127 msgid "Enabled" msgstr "" -#: forms.py:35 models.py:109 +#: forms.py:35 models.py:112 msgid "Foreign document attribute" msgstr "" @@ -55,11 +55,11 @@ msgstr "" msgid "Conditions" msgstr "" -#: links.py:32 views.py:183 +#: links.py:32 views.py:167 msgid "Create new smart link" msgstr "新建智能链接" -#: links.py:39 models.py:29 +#: links.py:39 models.py:30 msgid "Document types" msgstr "" @@ -67,8 +67,8 @@ msgstr "" msgid "Documents" msgstr "文档" -#: links.py:54 links.py:58 links.py:63 models.py:89 permissions.py:7 -#: views.py:139 +#: links.py:54 links.py:58 links.py:63 models.py:92 permissions.py:7 +#: views.py:129 msgid "Smart links" msgstr "智能链接" @@ -140,55 +140,55 @@ msgstr "正则表达式" msgid "is in regular expression (case insensitive)" msgstr "正则表达式(大小写不敏感)" -#: models.py:21 models.py:114 +#: models.py:22 models.py:117 msgid "" "Enter a template to render. Use Django's default templating language " "(https://docs.djangoproject.com/en/1.7/ref/templates/builtins/). The {{ " "document }} context variable is available." msgstr "" -#: models.py:43 +#: models.py:46 #, python-format msgid "Error generating dynamic label; %s" msgstr "" -#: models.py:52 +#: models.py:55 msgid "This smart link is not allowed for the selected document's type." msgstr "" -#: models.py:88 models.py:100 +#: models.py:91 models.py:103 msgid "Smart link" msgstr "" -#: models.py:104 +#: models.py:107 msgid "The inclusion is ignored for the first item." msgstr "第一项的包含将被忽略。" -#: models.py:108 +#: models.py:111 msgid "This represents the metadata of all other documents." msgstr "" -#: models.py:118 +#: models.py:121 msgid "Expression" msgstr "" -#: models.py:121 +#: models.py:124 msgid "Inverts the logic of the operator." msgstr "颠倒操作符的逻辑" -#: models.py:122 +#: models.py:125 msgid "Negated" msgstr "" -#: models.py:129 +#: models.py:132 msgid "not" msgstr "否" -#: models.py:134 +#: models.py:137 msgid "Link condition" msgstr "" -#: models.py:135 +#: models.py:138 msgid "Link conditions" msgstr "" @@ -208,65 +208,76 @@ msgstr "删除智能链接" msgid "Edit smart links" msgstr "编辑智能链接" -#: views.py:70 +#: serializers.py:115 +msgid "" +"Comma separated list of document type primary keys to which this smart link " +"will be attached." +msgstr "" + +#: serializers.py:139 +#, python-format +msgid "No such document type: %s" +msgstr "" + +#: views.py:60 #, python-format msgid "Smart link query error: %s" msgstr "智能链接查询错误:%s" -#: views.py:78 +#: views.py:68 #, python-format msgid "Documents in smart link: %s" msgstr "" -#: views.py:81 +#: views.py:71 #, python-format msgid "Documents in smart link \"%(smart_link)s\" as related to \"%(document)s\"" msgstr "" -#: views.py:97 +#: views.py:87 msgid "Available document types" msgstr "" -#: views.py:99 +#: views.py:89 msgid "Document types enabled" msgstr "" -#: views.py:108 +#: views.py:98 #, python-format msgid "Document type for which to enable smart link: %s" msgstr "" -#: views.py:173 +#: views.py:159 #, python-format msgid "Smart links for document: %s" msgstr "" -#: views.py:198 +#: views.py:182 #, python-format msgid "Edit smart link: %s" msgstr "编辑智能链接: %s" -#: views.py:210 +#: views.py:194 #, python-format #| msgid "Delete smart links" msgid "Delete smart link: %s" msgstr "" -#: views.py:222 +#: views.py:206 #, python-format msgid "Conditions for smart link: %s" msgstr "" -#: views.py:253 +#: views.py:233 #, python-format msgid "Add new conditions to smart link: \"%s\"" msgstr "新建条件到智能链接:\"%s\"" -#: views.py:299 +#: views.py:274 msgid "Edit smart link condition" msgstr "编辑智能链接条件" -#: views.py:334 +#: views.py:304 #, python-format #| msgid "Edit smart link condition" msgid "Delete smart link condition: \"%s\"?" diff --git a/mayan/apps/linking/managers.py b/mayan/apps/linking/managers.py new file mode 100644 index 0000000000..e21ce0364c --- /dev/null +++ b/mayan/apps/linking/managers.py @@ -0,0 +1,8 @@ +from django.db import models + + +class SmartLinkManager(models.Manager): + def get_for(self, document): + return self.filter( + document_types=document.document_type, enabled=True + ) diff --git a/mayan/apps/linking/models.py b/mayan/apps/linking/models.py index 776f84fbe6..22e599d50d 100644 --- a/mayan/apps/linking/models.py +++ b/mayan/apps/linking/models.py @@ -11,6 +11,7 @@ from documents.models import Document, DocumentType from .literals import ( INCLUSION_AND, INCLUSION_CHOICES, INCLUSION_OR, OPERATOR_CHOICES ) +from .managers import SmartLinkManager @python_2_unicode_compatible @@ -29,6 +30,8 @@ class SmartLink(models.Model): DocumentType, verbose_name=_('Document types') ) + objects = SmartLinkManager() + def __str__(self): return self.label diff --git a/mayan/apps/linking/serializers.py b/mayan/apps/linking/serializers.py new file mode 100644 index 0000000000..3bc1b3ba50 --- /dev/null +++ b/mayan/apps/linking/serializers.py @@ -0,0 +1,147 @@ +from __future__ import absolute_import, unicode_literals + +from django.utils.translation import ugettext_lazy as _ + +from rest_framework import serializers +from rest_framework.exceptions import ValidationError +from rest_framework.reverse import reverse + +from documents.models import DocumentType +from documents.serializers import DocumentSerializer, DocumentTypeSerializer + +from .models import SmartLink, SmartLinkCondition + + +class SmartLinkConditionSerializer(serializers.HyperlinkedModelSerializer): + smart_link_url = serializers.SerializerMethodField() + url = serializers.SerializerMethodField() + + class Meta: + fields = ( + 'enabled', 'expression', 'foreign_document_data', 'inclusion', + 'id', 'negated', 'operator', 'smart_link_url', 'url' + ) + model = SmartLinkCondition + + def create(self, validated_data): + validated_data['smart_link'] = self.context['smart_link'] + return super(SmartLinkConditionSerializer, self).create(validated_data) + + def get_smart_link_url(self, instance): + return reverse( + 'rest_api:smartlink-detail', args=(instance.smart_link.pk,), + request=self.context['request'], format=self.context['format'] + ) + + def get_url(self, instance): + return reverse( + 'rest_api:smartlinkcondition-detail', args=( + instance.smart_link.pk, instance.pk, + ), request=self.context['request'], format=self.context['format'] + ) + + +class SmartLinkSerializer(serializers.HyperlinkedModelSerializer): + conditions_url = serializers.HyperlinkedIdentityField( + view_name='rest_api:smartlinkcondition-list' + ) + document_types = DocumentTypeSerializer(read_only=True, many=True) + + class Meta: + extra_kwargs = { + 'url': {'view_name': 'rest_api:smartlink-detail'}, + } + fields = ( + 'conditions_url', 'document_types', 'dynamic_label', 'enabled', + 'label', 'id', 'url' + ) + model = SmartLink + + +class ResolvedSmartLinkDocumentSerializer(DocumentSerializer): + resolved_smart_link_url = serializers.SerializerMethodField() + + class Meta(DocumentSerializer.Meta): + fields = DocumentSerializer.Meta.fields + ( + 'resolved_smart_link_url', + ) + read_only_fields = DocumentSerializer.Meta.fields + + def get_resolved_smart_link_url(self, instance): + return reverse( + 'rest_api:resolvedsmartlink-detail', args=( + self.context['document'].pk, self.context['smart_link'].pk + ), request=self.context['request'], + format=self.context['format'] + ) + + +class ResolvedSmartLinkSerializer(SmartLinkSerializer): + resolved_dynamic_label = serializers.SerializerMethodField() + resolved_smart_link_url = serializers.SerializerMethodField() + resolved_documents_url = serializers.SerializerMethodField() + + class Meta(SmartLinkSerializer.Meta): + fields = SmartLinkSerializer.Meta.fields + ( + 'resolved_dynamic_label', 'resolved_smart_link_url', + 'resolved_documents_url' + ) + read_only_fields = SmartLinkSerializer.Meta.fields + + def get_resolved_documents_url(self, instance): + return reverse( + 'rest_api:resolvedsmartlinkdocument-list', + args=(self.context['document'].pk, instance.pk,), + request=self.context['request'], format=self.context['format'] + ) + + def get_resolved_dynamic_label(self, instance): + return instance.get_dynamic_label(document=self.context['document']) + + def get_resolved_smart_link_url(self, instance): + return reverse( + 'rest_api:resolvedsmartlink-detail', + args=(self.context['document'].pk, instance.pk,), + request=self.context['request'], format=self.context['format'] + ) + + +class WritableSmartLinkSerializer(serializers.ModelSerializer): + conditions_url = serializers.HyperlinkedIdentityField( + view_name='rest_api:smartlinkcondition-list' + ) + document_types_pk_list = serializers.CharField( + help_text=_( + 'Comma separated list of document type primary keys to which this ' + 'smart link will be attached.' + ), required=False + ) + + class Meta: + extra_kwargs = { + 'url': {'view_name': 'rest_api:smartlink-detail'}, + } + fields = ( + 'conditions_url', 'document_types_pk_list', 'dynamic_label', + 'enabled', 'label', 'id', 'url' + ) + model = SmartLink + + def validate(self, attrs): + document_types_pk_list = attrs.pop('document_types_pk_list', None) + document_types_result = [] + + if document_types_pk_list: + for pk in document_types_pk_list.split(','): + try: + document_type = DocumentType.objects.get(pk=pk) + except DocumentType.DoesNotExist: + raise ValidationError(_('No such document type: %s') % pk) + else: + # Accumulate valid stored document_type pks + document_types_result.append(document_type.pk) + + attrs['document_types'] = DocumentType.objects.filter( + pk__in=document_types_result + ) + return attrs diff --git a/mayan/apps/linking/tests/literals.py b/mayan/apps/linking/tests/literals.py index 279ea65564..6c00f08366 100644 --- a/mayan/apps/linking/tests/literals.py +++ b/mayan/apps/linking/tests/literals.py @@ -1,5 +1,9 @@ from __future__ import unicode_literals +TEST_SMART_LINK_CONDITION_FOREIGN_DOCUMENT_DATA = 'label' +TEST_SMART_LINK_CONDITION_EXPRESSION = 'sample' +TEST_SMART_LINK_CONDITION_EXPRESSION_EDITED = '\'test edited\'' +TEST_SMART_LINK_CONDITION_OPERATOR = 'icontains' TEST_SMART_LINK_DYNAMIC_LABEL = '{{ document.label }}' -TEST_SMART_LINK_EDITED_LABEL = 'test edited label' +TEST_SMART_LINK_LABEL_EDITED = 'test edited label' TEST_SMART_LINK_LABEL = 'test label' diff --git a/mayan/apps/linking/tests/test_api.py b/mayan/apps/linking/tests/test_api.py new file mode 100644 index 0000000000..08d5cba9ae --- /dev/null +++ b/mayan/apps/linking/tests/test_api.py @@ -0,0 +1,344 @@ +from __future__ import unicode_literals + +from django.contrib.auth import get_user_model +from django.core.urlresolvers import reverse +from django.test import override_settings + +from documents.models import DocumentType +from documents.tests.literals import ( + TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +) +from rest_api.tests import BaseAPITestCase +from user_management.tests.literals import ( + TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME +) + +from ..models import SmartLink, SmartLinkCondition + +from .literals import ( + TEST_SMART_LINK_CONDITION_FOREIGN_DOCUMENT_DATA, + TEST_SMART_LINK_CONDITION_EXPRESSION, + TEST_SMART_LINK_CONDITION_EXPRESSION_EDITED, + TEST_SMART_LINK_CONDITION_OPERATOR, TEST_SMART_LINK_DYNAMIC_LABEL, + TEST_SMART_LINK_LABEL_EDITED, TEST_SMART_LINK_LABEL +) + + +@override_settings(OCR_AUTO_OCR=False) +class SmartLinkAPITestCase(BaseAPITestCase): + def setUp(self): + super(SmartLinkAPITestCase, self).setUp() + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + def tearDown(self): + if hasattr(self, 'document_type'): + self.document_type.delete() + super(SmartLinkAPITestCase, self).tearDown() + + def _create_document_type(self): + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + def _create_document(self): + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object + ) + + def _create_smart_link(self): + return SmartLink.objects.create( + label=TEST_SMART_LINK_LABEL, + dynamic_label=TEST_SMART_LINK_DYNAMIC_LABEL + ) + + def test_smart_link_create_view(self): + response = self.client.post( + reverse('rest_api:smartlink-list'), { + 'label': TEST_SMART_LINK_LABEL + } + ) + + smart_link = SmartLink.objects.first() + self.assertEqual(response.data['id'], smart_link.pk) + self.assertEqual(response.data['label'], TEST_SMART_LINK_LABEL) + + self.assertEqual(SmartLink.objects.count(), 1) + self.assertEqual(smart_link.label, TEST_SMART_LINK_LABEL) + + def test_smart_link_create_with_document_types_view(self): + self._create_document_type() + + response = self.client.post( + reverse('rest_api:smartlink-list'), data={ + 'label': TEST_SMART_LINK_LABEL, + 'document_types_pk_list': self.document_type.pk + }, + ) + + smart_link = SmartLink.objects.first() + self.assertEqual(response.data['id'], smart_link.pk) + self.assertEqual(response.data['label'], TEST_SMART_LINK_LABEL) + + self.assertEqual(SmartLink.objects.count(), 1) + self.assertEqual(smart_link.label, TEST_SMART_LINK_LABEL) + self.assertQuerysetEqual( + smart_link.document_types.all(), (repr(self.document_type),) + ) + + def test_smart_link_delete_view(self): + smart_link = self._create_smart_link() + + self.client.delete( + reverse('rest_api:smartlink-detail', args=(smart_link.pk,)) + ) + + self.assertEqual(SmartLink.objects.count(), 0) + + def test_smart_link_detail_view(self): + smart_link = self._create_smart_link() + + response = self.client.get( + reverse('rest_api:smartlink-detail', args=(smart_link.pk,)) + ) + + self.assertEqual( + response.data['label'], TEST_SMART_LINK_LABEL + ) + + def test_smart_link_patch_view(self): + self._create_document_type() + smart_link = self._create_smart_link() + + self.client.patch( + reverse('rest_api:smartlink-detail', args=(smart_link.pk,)), + data={ + 'label': TEST_SMART_LINK_LABEL_EDITED, + 'document_types_pk_list': self.document_type.pk + } + ) + + smart_link.refresh_from_db() + + self.assertEqual(smart_link.label, TEST_SMART_LINK_LABEL_EDITED) + self.assertQuerysetEqual( + smart_link.document_types.all(), (repr(self.document_type),) + ) + + def test_smart_link_put_view(self): + smart_link = self._create_smart_link() + + self.client.put( + reverse('rest_api:smartlink-detail', args=(smart_link.pk,)), + data={ + 'label': TEST_SMART_LINK_LABEL_EDITED, + } + ) + + smart_link.refresh_from_db() + + self.assertEqual(smart_link.label, TEST_SMART_LINK_LABEL_EDITED) + + +@override_settings(OCR_AUTO_OCR=False) +class SmartLinkConditionAPITestCase(BaseAPITestCase): + def setUp(self): + super(SmartLinkConditionAPITestCase, self).setUp() + + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + def tearDown(self): + if hasattr(self, 'document_type'): + self.document_type.delete() + super(SmartLinkConditionAPITestCase, self).tearDown() + + def _create_document_type(self): + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + def _create_document(self): + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object + ) + + def _create_smart_link(self): + self.smart_link = SmartLink.objects.create( + label=TEST_SMART_LINK_LABEL, + dynamic_label=TEST_SMART_LINK_DYNAMIC_LABEL + ) + self.smart_link.document_types.add(self.document_type) + + def _create_smart_link_condition(self): + self.smart_link_condition = SmartLinkCondition.objects.create( + smart_link=self.smart_link, + foreign_document_data=TEST_SMART_LINK_CONDITION_FOREIGN_DOCUMENT_DATA, + expression=TEST_SMART_LINK_CONDITION_EXPRESSION, + operator=TEST_SMART_LINK_CONDITION_OPERATOR + ) + + def test_resolved_smart_link_detail_view(self): + self._create_document_type() + self._create_smart_link() + self._create_smart_link_condition() + self._create_document() + + response = self.client.get( + reverse( + 'rest_api:resolvedsmartlink-detail', + args=(self.document.pk, self.smart_link.pk) + ) + ) + + self.assertEqual( + response.data['label'], TEST_SMART_LINK_LABEL + ) + + def test_resolved_smart_link_list_view(self): + self._create_document_type() + self._create_smart_link() + self._create_smart_link_condition() + self._create_document() + + response = self.client.get( + reverse( + 'rest_api:resolvedsmartlink-list', args=(self.document.pk,) + ) + ) + + self.assertEqual( + response.data['results'][0]['label'], TEST_SMART_LINK_LABEL + ) + + def test_resolved_smart_link_document_list_view(self): + self._create_document_type() + self._create_smart_link() + self._create_smart_link_condition() + self._create_document() + + response = self.client.get( + reverse( + 'rest_api:resolvedsmartlinkdocument-list', + args=(self.document.pk, self.smart_link.pk) + ) + ) + + self.assertEqual( + response.data['results'][0]['label'], self.document.label + ) + + def test_smart_link_condition_create_view(self): + self._create_document_type() + self._create_smart_link() + + response = self.client.post( + reverse( + 'rest_api:smartlinkcondition-list', args=(self.smart_link.pk,) + ), { + 'foreign_document_data': TEST_SMART_LINK_CONDITION_FOREIGN_DOCUMENT_DATA, + 'expression': TEST_SMART_LINK_CONDITION_EXPRESSION, + 'operator': TEST_SMART_LINK_CONDITION_OPERATOR + } + ) + + smart_link_condition = SmartLinkCondition.objects.first() + self.assertEqual(response.data['id'], smart_link_condition.pk) + self.assertEqual( + response.data['operator'], TEST_SMART_LINK_CONDITION_OPERATOR + ) + + self.assertEqual(SmartLinkCondition.objects.count(), 1) + self.assertEqual( + smart_link_condition.operator, TEST_SMART_LINK_CONDITION_OPERATOR + ) + + def test_smart_link_condition_delete_view(self): + self._create_document_type() + self._create_smart_link() + self._create_smart_link_condition() + + self.client.delete( + reverse( + 'rest_api:smartlinkcondition-detail', + args=(self.smart_link.pk, self.smart_link_condition.pk) + ) + ) + + self.assertEqual(SmartLinkCondition.objects.count(), 0) + + def test_smart_link_condition_detail_view(self): + self._create_document_type() + self._create_smart_link() + self._create_smart_link_condition() + + response = self.client.get( + reverse( + 'rest_api:smartlinkcondition-detail', + args=(self.smart_link.pk, self.smart_link_condition.pk) + ) + ) + + self.assertEqual( + response.data['operator'], TEST_SMART_LINK_CONDITION_OPERATOR + ) + + def test_smart_link_condition_patch_view(self): + self._create_document_type() + self._create_smart_link() + self._create_smart_link_condition() + + self.client.patch( + reverse( + 'rest_api:smartlinkcondition-detail', + args=(self.smart_link.pk, self.smart_link_condition.pk) + ), + data={ + 'expression': TEST_SMART_LINK_CONDITION_EXPRESSION_EDITED, + } + ) + + self.smart_link_condition.refresh_from_db() + + self.assertEqual( + self.smart_link_condition.expression, + TEST_SMART_LINK_CONDITION_EXPRESSION_EDITED + ) + + def test_smart_link_condition_put_view(self): + self._create_document_type() + self._create_smart_link() + self._create_smart_link_condition() + + self.client.put( + reverse( + 'rest_api:smartlinkcondition-detail', + args=(self.smart_link.pk, self.smart_link_condition.pk) + ), + data={ + 'expression': TEST_SMART_LINK_CONDITION_EXPRESSION_EDITED, + 'foreign_document_data': TEST_SMART_LINK_CONDITION_FOREIGN_DOCUMENT_DATA, + 'operator': TEST_SMART_LINK_CONDITION_OPERATOR, + } + ) + + self.smart_link_condition.refresh_from_db() + + self.assertEqual( + self.smart_link_condition.expression, + TEST_SMART_LINK_CONDITION_EXPRESSION_EDITED + ) diff --git a/mayan/apps/linking/tests/test_views.py b/mayan/apps/linking/tests/test_views.py index 92d43e8841..218fcffd08 100644 --- a/mayan/apps/linking/tests/test_views.py +++ b/mayan/apps/linking/tests/test_views.py @@ -10,7 +10,7 @@ from ..permissions import ( ) from .literals import ( - TEST_SMART_LINK_DYNAMIC_LABEL, TEST_SMART_LINK_EDITED_LABEL, + TEST_SMART_LINK_DYNAMIC_LABEL, TEST_SMART_LINK_LABEL_EDITED, TEST_SMART_LINK_LABEL ) @@ -80,7 +80,7 @@ class SmartLinkViewTestCase(GenericDocumentViewTestCase): response = self.post( 'linking:smart_link_edit', args=(smart_link.pk,), data={ - 'label': TEST_SMART_LINK_EDITED_LABEL + 'label': TEST_SMART_LINK_LABEL_EDITED } ) self.assertEqual(response.status_code, 403) @@ -98,13 +98,13 @@ class SmartLinkViewTestCase(GenericDocumentViewTestCase): response = self.post( 'linking:smart_link_edit', args=(smart_link.pk,), data={ - 'label': TEST_SMART_LINK_EDITED_LABEL + 'label': TEST_SMART_LINK_LABEL_EDITED }, follow=True ) smart_link = SmartLink.objects.get(pk=smart_link.pk) self.assertContains(response, text='update', status_code=200) - self.assertEqual(smart_link.label, TEST_SMART_LINK_EDITED_LABEL) + self.assertEqual(smart_link.label, TEST_SMART_LINK_LABEL_EDITED) def setup_smart_links(self): smart_link = SmartLink.objects.create( diff --git a/mayan/apps/linking/urls.py b/mayan/apps/linking/urls.py index 461bbf46c3..46eb35e989 100644 --- a/mayan/apps/linking/urls.py +++ b/mayan/apps/linking/urls.py @@ -2,6 +2,11 @@ from __future__ import unicode_literals from django.conf.urls import url +from .api_views import ( + APIResolvedSmartLinkView, APIResolvedSmartLinkDocumentListView, + APIResolvedSmartLinkListView, APISmartLinkListView, APISmartLinkView, + APISmartLinkConditionListView, APISmartLinkConditionView +) from .views import ( DocumentSmartLinkListView, ResolvedSmartLinkView, SetupSmartLinkDocumentTypesView, SmartLinkConditionListView, @@ -60,3 +65,38 @@ urlpatterns = [ name='smart_link_condition_delete' ), ] + +api_urls = [ + url( + r'^smart_links/$', APISmartLinkListView.as_view(), + name='smartlink-list' + ), + url( + r'^smart_links/(?P[0-9]+)/$', APISmartLinkView.as_view(), + name='smartlink-detail' + ), + url( + r'^smart_links/(?P[0-9]+)/conditions/$', + APISmartLinkConditionListView.as_view(), name='smartlinkcondition-list' + ), + url( + r'^smart_links/(?P[0-9]+)/conditions/(?P[0-9]+)/$', + APISmartLinkConditionView.as_view(), + name='smartlinkcondition-detail' + ), + url( + r'^documents/(?P[0-9]+)/resolved_smart_links/$', + APIResolvedSmartLinkListView.as_view(), + name='resolvedsmartlink-list' + ), + url( + r'^documents/(?P[0-9]+)/resolved_smart_links/(?P[0-9]+)/$', + APIResolvedSmartLinkView.as_view(), + name='resolvedsmartlink-detail' + ), + url( + r'^documents/(?P[0-9]+)/resolved_smart_links/(?P[0-9]+)/documents/$', + APIResolvedSmartLinkDocumentListView.as_view(), + name='resolvedsmartlinkdocument-list' + ), +] diff --git a/mayan/apps/linking/views.py b/mayan/apps/linking/views.py index 0af56cfcd4..2f82f757b9 100644 --- a/mayan/apps/linking/views.py +++ b/mayan/apps/linking/views.py @@ -160,9 +160,7 @@ class DocumentSmartLinkListView(SmartLinkListView): } def get_smart_link_queryset(self): - return ResolvedSmartLink.objects.filter( - document_types=self.document.document_type, enabled=True - ) + return ResolvedSmartLink.objects.get_for(document=self.document) class SmartLinkCreateView(SingleObjectCreateView): diff --git a/mayan/apps/lock_manager/apps.py b/mayan/apps/lock_manager/apps.py index 9ad96c81d5..27e11f8bd1 100644 --- a/mayan/apps/lock_manager/apps.py +++ b/mayan/apps/lock_manager/apps.py @@ -5,6 +5,6 @@ from django.utils.translation import ugettext_lazy as _ class LockManagerApp(apps.AppConfig): + has_tests = True name = 'lock_manager' - test = True verbose_name = _('Lock manager') diff --git a/mayan/apps/lock_manager/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/ar/LC_MESSAGES/django.mo index 221ad445d1..ee24593b8e 100644 Binary files a/mayan/apps/lock_manager/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/ar/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/ar/LC_MESSAGES/django.po index 4b665608fe..42a6364683 100644 --- a/mayan/apps/lock_manager/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/ar/LC_MESSAGES/django.po @@ -1,23 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/" +"ar/)\n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/bg/LC_MESSAGES/django.mo index e2cd12d3d4..3aa02d0b9f 100644 Binary files a/mayan/apps/lock_manager/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/bg/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/bg/LC_MESSAGES/django.po index 508066e2cf..5a569be217 100644 --- a/mayan/apps/lock_manager/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/bg/LC_MESSAGES/django.po @@ -1,23 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" +"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/bs_BA/LC_MESSAGES/django.mo index 8b747daee3..26be8d72e3 100644 Binary files a/mayan/apps/lock_manager/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/bs_BA/LC_MESSAGES/django.po index d194394497..eb2048760e 100644 --- a/mayan/apps/lock_manager/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/bs_BA/LC_MESSAGES/django.po @@ -1,23 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" +"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/" +"rosarior/mayan-edms/language/bs_BA/)\n" +"Language: bs_BA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bs_BA\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" +"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" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/da/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/da/LC_MESSAGES/django.mo index b1e5c87306..5a3f899856 100644 Binary files a/mayan/apps/lock_manager/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/da/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/da/LC_MESSAGES/django.po index 63a8389a6f..1e4484269c 100644 --- a/mayan/apps/lock_manager/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/da/LC_MESSAGES/django.po @@ -1,23 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" +"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/" +"da/)\n" +"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/de_DE/LC_MESSAGES/django.mo index 45cb6d6bbc..626cd7ade8 100644 Binary files a/mayan/apps/lock_manager/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/de_DE/LC_MESSAGES/django.po index 45668e68a8..e911b49842 100644 --- a/mayan/apps/lock_manager/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/de_DE/LC_MESSAGES/django.po @@ -1,23 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:04+0000\n" "Last-Translator: Mathias Behrle \n" -"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" +"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "Sperrverwaltung" diff --git a/mayan/apps/lock_manager/locale/en/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/en/LC_MESSAGES/django.mo index 6bcd9f629a..2a49b9eccb 100644 Binary files a/mayan/apps/lock_manager/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/en/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/en/LC_MESSAGES/django.po index 8b89946c4d..32fed63225 100644 --- a/mayan/apps/lock_manager/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/es/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/es/LC_MESSAGES/django.mo index d4da72101e..e77b035b7f 100644 Binary files a/mayan/apps/lock_manager/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/es/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/es/LC_MESSAGES/django.po index 28b9f597cd..be35c6992e 100644 --- a/mayan/apps/lock_manager/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/es/LC_MESSAGES/django.po @@ -1,24 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Roberto Rosario, 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:04+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "Gestor de bloqueos" diff --git a/mayan/apps/lock_manager/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/fa/LC_MESSAGES/django.mo index 5decc33561..5e367c5dab 100644 Binary files a/mayan/apps/lock_manager/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/fa/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/fa/LC_MESSAGES/django.po index bb1eeb1ca3..3c4f03336e 100644 --- a/mayan/apps/lock_manager/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/fa/LC_MESSAGES/django.po @@ -1,23 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/" +"language/fa/)\n" +"Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/fr/LC_MESSAGES/django.mo index cade42fce7..9d46898597 100644 Binary files a/mayan/apps/lock_manager/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/fr/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/fr/LC_MESSAGES/django.po index 8dd496115e..4949c76eb1 100644 --- a/mayan/apps/lock_manager/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/fr/LC_MESSAGES/django.po @@ -1,24 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Christophe CHAUVET , 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:04+0000\n" "Last-Translator: Christophe CHAUVET \n" -"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" +"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/" +"fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "Gestionnaire de vérrou" diff --git a/mayan/apps/lock_manager/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/hu/LC_MESSAGES/django.mo index 576f0cdf08..88b6e13897 100644 Binary files a/mayan/apps/lock_manager/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/hu/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/hu/LC_MESSAGES/django.po index 8ab470b890..d004550145 100644 --- a/mayan/apps/lock_manager/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/hu/LC_MESSAGES/django.po @@ -1,23 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" +"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/hu/)\n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/id/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/id/LC_MESSAGES/django.mo index 2fac201b33..e8fb71df19 100644 Binary files a/mayan/apps/lock_manager/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/id/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/id/LC_MESSAGES/django.po index 28aab4d7a8..d54ee3b38a 100644 --- a/mayan/apps/lock_manager/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/id/LC_MESSAGES/django.po @@ -1,23 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" +"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/" +"language/id/)\n" +"Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/it/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/it/LC_MESSAGES/django.mo index 9c4fb23e94..fb0dcfa5a8 100644 Binary files a/mayan/apps/lock_manager/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/it/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/it/LC_MESSAGES/django.po index c734ff472b..965f4c5d8e 100644 --- a/mayan/apps/lock_manager/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/it/LC_MESSAGES/django.po @@ -1,24 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Marco Camplese , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-09-24 09:13+0000\n" "Last-Translator: Marco Camplese \n" -"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" +"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "Gestore blocco" diff --git a/mayan/apps/lock_manager/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/nl_NL/LC_MESSAGES/django.mo index 2c3454e151..3242fe2e80 100644 Binary files a/mayan/apps/lock_manager/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/nl_NL/LC_MESSAGES/django.po index 97fbc9977c..392650c868 100644 --- a/mayan/apps/lock_manager/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/nl_NL/LC_MESSAGES/django.po @@ -1,24 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Evelijn Saaltink , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-11-09 16:40+0000\n" "Last-Translator: Evelijn Saaltink \n" -"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-" +"edms/language/nl_NL/)\n" +"Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/pl/LC_MESSAGES/django.mo index 2f721648c0..8764a448d6 100644 Binary files a/mayan/apps/lock_manager/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/pl/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/pl/LC_MESSAGES/django.po index f1fd7d74aa..d78b3c91dd 100644 --- a/mayan/apps/lock_manager/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/pl/LC_MESSAGES/django.po @@ -1,23 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" +"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/" +"pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/pt/LC_MESSAGES/django.mo index 123c54baf4..00d907dd6d 100644 Binary files a/mayan/apps/lock_manager/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/pt/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/pt/LC_MESSAGES/django.po index 3be7f3e8ca..72e0d9a1a9 100644 --- a/mayan/apps/lock_manager/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/pt/LC_MESSAGES/django.po @@ -1,23 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/pt_BR/LC_MESSAGES/django.mo index d875d26b9c..871ae9827d 100644 Binary files a/mayan/apps/lock_manager/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/pt_BR/LC_MESSAGES/django.po index b33cfb2628..e419b14722 100644 --- a/mayan/apps/lock_manager/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/pt_BR/LC_MESSAGES/django.po @@ -1,24 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Aline Freitas , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-11-04 19:32+0000\n" "Last-Translator: Aline Freitas \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-" +"edms/language/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "Gerenciador de bloqueios" diff --git a/mayan/apps/lock_manager/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/ro_RO/LC_MESSAGES/django.mo index 4160a281ac..d67469697d 100644 Binary files a/mayan/apps/lock_manager/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/ro_RO/LC_MESSAGES/django.po index 3b61ec3c92..7107d6b773 100644 --- a/mayan/apps/lock_manager/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/ro_RO/LC_MESSAGES/django.po @@ -1,23 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-" +"edms/language/ro_RO/)\n" +"Language: ro_RO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ro_RO\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/ru/LC_MESSAGES/django.mo index b9970521ac..6222ad6f01 100644 Binary files a/mayan/apps/lock_manager/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/ru/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/ru/LC_MESSAGES/django.po index d532d5e137..8e00813119 100644 --- a/mayan/apps/lock_manager/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/ru/LC_MESSAGES/django.po @@ -1,23 +1,26 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/sl_SI/LC_MESSAGES/django.mo index 70062d1c09..0775c853a4 100644 Binary files a/mayan/apps/lock_manager/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/sl_SI/LC_MESSAGES/django.po index 53f4d53e38..83e2e63b59 100644 --- a/mayan/apps/lock_manager/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/sl_SI/LC_MESSAGES/django.po @@ -1,23 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-" +"edms/language/sl_SI/)\n" +"Language: sl_SI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: sl_SI\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/vi_VN/LC_MESSAGES/django.mo index 7ff23a51ff..00918532f8 100644 Binary files a/mayan/apps/lock_manager/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/vi_VN/LC_MESSAGES/django.po index 710bb23a22..e9b5976498 100644 --- a/mayan/apps/lock_manager/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/vi_VN/LC_MESSAGES/django.po @@ -1,23 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/" +"mayan-edms/language/vi_VN/)\n" +"Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/lock_manager/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/lock_manager/locale/zh_CN/LC_MESSAGES/django.mo index 222bc205e2..3a0fb4ad55 100644 Binary files a/mayan/apps/lock_manager/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/lock_manager/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/lock_manager/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/lock_manager/locale/zh_CN/LC_MESSAGES/django.po index a1edde08ae..16aba05aa7 100644 --- a/mayan/apps/lock_manager/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/lock_manager/locale/zh_CN/LC_MESSAGES/django.po @@ -1,23 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:15+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" +"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/" +"language/zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:10 +#: apps.py:10 settings.py:10 msgid "Lock manager" msgstr "" diff --git a/mayan/apps/mailer/apps.py b/mayan/apps/mailer/apps.py index a333eb3d23..aacea96688 100644 --- a/mayan/apps/mailer/apps.py +++ b/mayan/apps/mailer/apps.py @@ -21,8 +21,8 @@ from .permissions import ( class MailerApp(MayanAppConfig): + has_tests = True name = 'mailer' - test = True verbose_name = _('Mailer') def ready(self): diff --git a/mayan/apps/mailer/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/ar/LC_MESSAGES/django.mo index 798d7b15f0..96aadb4e6d 100644 Binary files a/mayan/apps/mailer/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/ar/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/ar/LC_MESSAGES/django.po index bd25e15981..26f916795d 100644 --- a/mayan/apps/mailer/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/ar/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2015-08-20 19:16+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,39 +17,39 @@ msgstr "" "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" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -123,34 +123,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "يجب أن توفر ما لا يقل عن وثيقة واحدة." - -#: views.py:105 -msgid "Successfully queued for delivery via email." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" msgstr "" -#: views.py:114 +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" + +#: views.py:48 msgid "Send" msgstr "" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/mailer/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/bg/LC_MESSAGES/django.mo index 2046c01dcd..301b1cc0ab 100644 Binary files a/mayan/apps/mailer/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/bg/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/bg/LC_MESSAGES/django.po index c79c8d79b6..eaac9825c1 100644 --- a/mayan/apps/mailer/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/bg/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:07+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -18,39 +18,39 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "Ел. поща адрес" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "Относно" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "Съдържание" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "Пощ. документ" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "Пощ. връзка" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -124,34 +124,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Трябва да посочите поне един документ." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" +msgstr "" -#: views.py:105 -msgid "Successfully queued for delivery via email." -msgstr "Успешно наредено за изпращане чрез ел.поща." +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" -#: views.py:114 +#: views.py:48 msgid "Send" msgstr "Изпрати" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/mailer/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/bs_BA/LC_MESSAGES/django.mo index 6621c1115f..5dc33dcdab 100644 Binary files a/mayan/apps/mailer/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/bs_BA/LC_MESSAGES/django.po index b5d974c753..33d44c9331 100644 --- a/mayan/apps/mailer/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/bs_BA/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2015-08-20 19:16+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,39 +17,39 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -123,34 +123,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Mora biti barem jedan dokument." - -#: views.py:105 -msgid "Successfully queued for delivery via email." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" msgstr "" -#: views.py:114 +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" + +#: views.py:48 msgid "Send" msgstr "" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/mailer/locale/da/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/da/LC_MESSAGES/django.mo index 97a0d55e8d..c616db04ec 100644 Binary files a/mayan/apps/mailer/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/da/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/da/LC_MESSAGES/django.po index 2991b80f60..1260e235b8 100644 --- a/mayan/apps/mailer/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/da/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2015-08-20 19:16+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,39 +17,39 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -123,34 +123,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Angiv mindst ét ​​dokument." - -#: views.py:105 -msgid "Successfully queued for delivery via email." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" msgstr "" -#: views.py:114 +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" + +#: views.py:48 msgid "Send" msgstr "" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/mailer/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/de_DE/LC_MESSAGES/django.mo index 4680b55b45..c399b834d9 100644 Binary files a/mayan/apps/mailer/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/de_DE/LC_MESSAGES/django.po index 2a57caa1e0..1cdb05e5c6 100644 --- a/mayan/apps/mailer/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/de_DE/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:07+0000\n" -"Last-Translator: Mathias Behrle \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,39 +17,39 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "Mailer" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "Zeit" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "Nachricht" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "E-Mailadresse" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "Betreff" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "Nachrichtenteil" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "Dokument als E-Mailanhang senden" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "Link zum Dokument per E-Mail senden" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "Fehlerprotokoll" @@ -123,34 +123,26 @@ msgstr "Vorlage für die Betreffzeile des Formulars für die Dokumentenversendun msgid "Template for the document email form body line." msgstr "Vorlage für den Nachrichtenteil des Formulars für die Dokumentenversendung" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Es muss mindestens ein Dokument angegeben werden." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" +msgstr "" -#: views.py:105 -msgid "Successfully queued for delivery via email." -msgstr "Erfolgreich eingereiht in den E-Mailversand" +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" -#: views.py:114 +#: views.py:48 msgid "Send" msgstr "Senden" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" -msgstr "E-Mail Dokument: %s" +msgid "%(count)d document link queued for email delivery" +msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "E-Mail Link für Dokument %s" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "E-Mail Dokumente: %s" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" -msgstr "Links für Dokumente %s" +msgid "%(count)d document links queued for email delivery" +msgstr "" diff --git a/mayan/apps/mailer/locale/en/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/en/LC_MESSAGES/django.mo index 6bcd9f629a..2a49b9eccb 100644 Binary files a/mayan/apps/mailer/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/en/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/en/LC_MESSAGES/django.po index 8794297880..95be5e927b 100644 --- a/mayan/apps/mailer/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,39 +17,39 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -123,34 +123,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" msgstr "" -#: views.py:105 -msgid "Successfully queued for delivery via email." +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" msgstr "" -#: views.py:114 +#: views.py:48 msgid "Send" msgstr "" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/mailer/locale/es/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/es/LC_MESSAGES/django.mo index 9388e3b453..c8524185b5 100644 Binary files a/mayan/apps/mailer/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/es/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/es/LC_MESSAGES/django.po index 620c494815..e9f54a6f2b 100644 --- a/mayan/apps/mailer/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/es/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-05-09 01:36+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -20,39 +20,39 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "Correspondencia" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "Fecha y hora" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "Mensaje" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "Dirección de correo electrónico" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "Tema" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "Cuerpo" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "Enviar documento" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "Enviar enlace" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "Biracora de errores de envío" @@ -126,34 +126,26 @@ msgstr "Plantilla para la línea de sujeto del correo electrónico de envio de d msgid "Template for the document email form body line." msgstr "Plantilla para la línea de cuerpo del correo electrónico para envío de documento." -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Debe proveer al menos un documento" +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" +msgstr "" -#: views.py:105 -msgid "Successfully queued for delivery via email." -msgstr "Añadido de forma exitosa a la lista de espera para envío de correo electrónico" +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" -#: views.py:114 +#: views.py:48 msgid "Send" msgstr "Enviar" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" -msgstr "Enviar documento: %s" +msgid "%(count)d document link queued for email delivery" +msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "Enviar enlace para el documento: %s" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "Enviar documentos: %s" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" -msgstr "Enviar enlaces para documentos: %s" +msgid "%(count)d document links queued for email delivery" +msgstr "" diff --git a/mayan/apps/mailer/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/fa/LC_MESSAGES/django.mo index 3a0871e711..9bca9010e5 100644 Binary files a/mayan/apps/mailer/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/fa/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/fa/LC_MESSAGES/django.po index 09712e1eff..da2441e358 100644 --- a/mayan/apps/mailer/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/fa/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:07+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -18,39 +18,39 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "تاریخ و زمان" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "پست الکترونیکی" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "موضوع" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "بدنه" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "ایمیل کردن سند" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "پیوند پلکترونیکی" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -124,34 +124,26 @@ msgstr "الگوی ارسال سند بوسیله پیوند آن از داخل msgid "Template for the document email form body line." msgstr "الگوی ارسال سند از داخل بدنه" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "حداقل یک سند بایست ارایه گردد." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" +msgstr "" -#: views.py:105 -msgid "Successfully queued for delivery via email." -msgstr "ورود موفق به صف ارسال از طریق ایمیل" +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" -#: views.py:114 +#: views.py:48 msgid "Send" msgstr "ارسال" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" -msgstr "ایمیل سند: %s" +msgid "%(count)d document link queued for email delivery" +msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "پیوند ایمیل برای سند: %s" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "ایمیل اسناد: %s" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" -msgstr "پیوند ایمیل برای اسناد: %s" +msgid "%(count)d document links queued for email delivery" +msgstr "" diff --git a/mayan/apps/mailer/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/fr/LC_MESSAGES/django.mo index 68ac401944..f64d392606 100644 Binary files a/mayan/apps/mailer/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/fr/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/fr/LC_MESSAGES/django.po index c4d440791c..2b25d93f06 100644 --- a/mayan/apps/mailer/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/fr/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:07+0000\n" -"Last-Translator: Christophe CHAUVET \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,39 +18,39 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "Gestionnaire d'envoi" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "Date et heure" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "Message" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "Adresse du courriel" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "Sujet" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "Corps" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "Envoyer le document par courriel" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "Lien du courriel" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "Journal d'erreur du document envoyé" @@ -124,34 +124,26 @@ msgstr "Modèle pour le sujet du courriel du document." msgid "Template for the document email form body line." msgstr "Modèle pour le corps du courriel du document." -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Vous devez fournir au moins un document." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" +msgstr "" -#: views.py:105 -msgid "Successfully queued for delivery via email." -msgstr "Ajouter à la file d'attente avec succès pour l'envoi via courriel." +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" -#: views.py:114 +#: views.py:48 msgid "Send" msgstr "Envoyé" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" -msgstr "Document du courriel: %s" +msgid "%(count)d document link queued for email delivery" +msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "Lien du courriel pour ce document: %s" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "Documents du courriel: %s" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" -msgstr "Liens de courriel pour le document: %s" +msgid "%(count)d document links queued for email delivery" +msgstr "" diff --git a/mayan/apps/mailer/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/hu/LC_MESSAGES/django.mo index 3ad8c86f5d..4144046e02 100644 Binary files a/mayan/apps/mailer/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/hu/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/hu/LC_MESSAGES/django.po index 478628ce15..d6fc957bdc 100644 --- a/mayan/apps/mailer/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/hu/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2015-08-20 19:16+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,39 +17,39 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -123,34 +123,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Adjon meg legalább egy dokumentumot." - -#: views.py:105 -msgid "Successfully queued for delivery via email." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" msgstr "" -#: views.py:114 +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" + +#: views.py:48 msgid "Send" msgstr "" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/mailer/locale/id/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/id/LC_MESSAGES/django.mo index 25ce02cbc7..1a79a82f4e 100644 Binary files a/mayan/apps/mailer/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/id/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/id/LC_MESSAGES/django.po index 4a8852851e..3ce394916a 100644 --- a/mayan/apps/mailer/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/id/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2015-08-20 19:16+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,39 +17,39 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -123,34 +123,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Harus memberikan setidaknya satu dokumen." - -#: views.py:105 -msgid "Successfully queued for delivery via email." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" msgstr "" -#: views.py:114 +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" + +#: views.py:48 msgid "Send" msgstr "" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/mailer/locale/it/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/it/LC_MESSAGES/django.mo index 1ccfce19a4..cde481eead 100644 Binary files a/mayan/apps/mailer/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/it/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/it/LC_MESSAGES/django.po index d36773ca27..2208783d2c 100644 --- a/mayan/apps/mailer/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/it/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-09-24 10:09+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,39 +18,39 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "Posta" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "Data e ora" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "Messaggio" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "Indirizzo email" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "Oggetto" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "Corpo" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "Documento email" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "Link email" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "Log errori mailing documento" @@ -124,34 +124,26 @@ msgstr "Template per l'oggetto del modulo e-mail per l'invio documento." msgid "Template for the document email form body line." msgstr "Template per il corpo del modulo e-mail per l'invio documento." -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Fornire almeno un documento " +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" +msgstr "" -#: views.py:105 -msgid "Successfully queued for delivery via email." -msgstr "Messo in coda per il recapito via email." +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" -#: views.py:114 +#: views.py:48 msgid "Send" msgstr "Invia" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" -msgstr "Email documento: %s" +msgid "%(count)d document link queued for email delivery" +msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "Email link per il documento: %s" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "Email documenti: %s" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" -msgstr "Email link per i documenti: %s" +msgid "%(count)d document links queued for email delivery" +msgstr "" diff --git a/mayan/apps/mailer/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/nl_NL/LC_MESSAGES/django.mo index 426a200b38..b01cd70868 100644 Binary files a/mayan/apps/mailer/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/nl_NL/LC_MESSAGES/django.po index d37cfe6384..107fe6d5ce 100644 --- a/mayan/apps/mailer/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/nl_NL/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 12:35+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,39 +18,39 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "Mailer" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "Datum en tijd" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "Bericht" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "E-mailadres" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "Onderwerp" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "Body" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "E-mail document" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "E-mail lin" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -124,34 +124,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "U dient minstens 1 document aan te geven." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" +msgstr "" -#: views.py:105 -msgid "Successfully queued for delivery via email." -msgstr "Succesvol in de wachtrij geplaatst voor levering via e-mail." +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" -#: views.py:114 +#: views.py:48 msgid "Send" msgstr "Verzenden" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" -msgstr "E-mail document: %s" +msgid "%(count)d document link queued for email delivery" +msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "E-mail link voor document: %s" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "E-mail documenten: %s" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" -msgstr "E-mail links voor documenten: %s" +msgid "%(count)d document links queued for email delivery" +msgstr "" diff --git a/mayan/apps/mailer/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/pl/LC_MESSAGES/django.mo index 1fb73eb45e..2cee7eee97 100644 Binary files a/mayan/apps/mailer/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/pl/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/pl/LC_MESSAGES/django.po index c38e9cd01a..3aaea55f61 100644 --- a/mayan/apps/mailer/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/pl/LC_MESSAGES/django.po @@ -9,49 +9,49 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-03-21 21:07+0000\n" -"Last-Translator: Wojtek Warczakowski \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "Data i godzina" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "Adres e-mail:" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "Temat" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "Treść" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "Dokument e-mail" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "Link e-mail" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "Błędy wysyłania dokumentów" @@ -125,34 +125,26 @@ msgstr "Szablon tematu wiadomości email" msgid "Template for the document email form body line." msgstr "Szablon treści e-mail" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Musisz podać co najmniej jeden dokument." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" +msgstr "" -#: views.py:105 -msgid "Successfully queued for delivery via email." -msgstr "Przekazanie do wysłania drogą e-mail zakończone powodzeniem. " +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" -#: views.py:114 +#: views.py:48 msgid "Send" msgstr "Wyślij" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" -msgstr "Dokument e-mail: %s" +msgid "%(count)d document link queued for email delivery" +msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "Link dokumetu: %s" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "Dokumenty e-mail: %s" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" -msgstr "Linki dla dokumentów: %s" +msgid "%(count)d document links queued for email delivery" +msgstr "" diff --git a/mayan/apps/mailer/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/pt/LC_MESSAGES/django.mo index f1f05abb0b..a07d56e28f 100644 Binary files a/mayan/apps/mailer/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/pt/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/pt/LC_MESSAGES/django.po index f419ceacc2..cb4a371921 100644 --- a/mayan/apps/mailer/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/pt/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2015-08-20 19:16+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,39 +17,39 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "Endereço de correio eletrónico" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "Assunto" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "Corpo" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "Documento de correio eletrónico" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "Hiperçigação de correio eletrónico" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -123,34 +123,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Deve fornecer pelo menos um documento." - -#: views.py:105 -msgid "Successfully queued for delivery via email." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" msgstr "" -#: views.py:114 +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" + +#: views.py:48 msgid "Send" msgstr "Enviar" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/mailer/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/pt_BR/LC_MESSAGES/django.mo index 57b92419df..fa6f848b21 100644 Binary files a/mayan/apps/mailer/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/pt_BR/LC_MESSAGES/django.po index fa2bb6d545..9c32b5e1d8 100644 --- a/mayan/apps/mailer/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/pt_BR/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-11-17 22:45+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,39 +19,39 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "Envio de emails" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "Data e hora" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "Mensagem" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "Endereço de E-mail" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "Assunto" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "Corpo" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "Documento do e-mail" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "Ligação do e-mail" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "Registro de erro de envio" @@ -125,34 +125,26 @@ msgstr "Modelo para a linha de assunto do e-mail de envio de documento." msgid "Template for the document email form body line." msgstr "Modelo para a linha de corpo do e-mail para envio de documento." -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Deve fornecer pelo menos um documento." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" +msgstr "" -#: views.py:105 -msgid "Successfully queued for delivery via email." -msgstr "Agregado com êxito à lista de espera para envio de e-mail." +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" -#: views.py:114 +#: views.py:48 msgid "Send" msgstr "Enviar" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" -msgstr "E-mail de documentos: %s" +msgid "%(count)d document link queued for email delivery" +msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "link de e-mail para documento: %s " - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "E-mail de documentos: %s" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" -msgstr "link de e-mail para documento: %s " +msgid "%(count)d document links queued for email delivery" +msgstr "" diff --git a/mayan/apps/mailer/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/ro_RO/LC_MESSAGES/django.mo index 3a0d42b056..5412f82dbb 100644 Binary files a/mayan/apps/mailer/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/ro_RO/LC_MESSAGES/django.po index debd0713cd..e2d2b92b98 100644 --- a/mayan/apps/mailer/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/ro_RO/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2015-08-20 19:16+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,39 +17,39 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -123,34 +123,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Trebuie selectat cel puțin un document." - -#: views.py:105 -msgid "Successfully queued for delivery via email." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" msgstr "" -#: views.py:114 +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" + +#: views.py:48 msgid "Send" msgstr "" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/mailer/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/ru/LC_MESSAGES/django.mo index 5bd5e1c07b..3c0b9702e1 100644 Binary files a/mayan/apps/mailer/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/ru/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/ru/LC_MESSAGES/django.po index 08e00e499f..eaed973c35 100644 --- a/mayan/apps/mailer/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/ru/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-07-13 21:46+0000\n" -"Last-Translator: lilo.panic\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,39 +18,39 @@ msgstr "" "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" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "Электронный почтальон" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "Дата и время" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "Сообщение" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "Адрес электронной почты" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "Тема" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "Тело письма" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "Журнал ошибок отправки электронной почты" @@ -124,34 +124,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Необходимо указатьть хотя бы один документ." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" +msgstr "" -#: views.py:105 -msgid "Successfully queued for delivery via email." -msgstr "Успешно добавлено в очередь доставки электронной почты." +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" -#: views.py:114 +#: views.py:48 msgid "Send" msgstr "Отправить" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/mailer/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/sl_SI/LC_MESSAGES/django.mo index 7947303cfc..a6994d9f47 100644 Binary files a/mayan/apps/mailer/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/sl_SI/LC_MESSAGES/django.po index 193e9e08e9..5d3fe5dac6 100644 --- a/mayan/apps/mailer/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/sl_SI/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2015-08-20 19:16+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,39 +17,39 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -123,34 +123,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Potrebno je podati vsaj en dokument" - -#: views.py:105 -msgid "Successfully queued for delivery via email." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" msgstr "" -#: views.py:114 +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" + +#: views.py:48 msgid "Send" msgstr "" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/mailer/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/vi_VN/LC_MESSAGES/django.mo index 58c2f06787..8eabc3c25f 100644 Binary files a/mayan/apps/mailer/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/vi_VN/LC_MESSAGES/django.po index 60e533f5f7..ded3c9e3a2 100644 --- a/mayan/apps/mailer/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/vi_VN/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2015-08-20 19:16+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,39 +17,39 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -123,34 +123,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "Cần cung cấp ít nhất một tài liệu." - -#: views.py:105 -msgid "Successfully queued for delivery via email." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" msgstr "" -#: views.py:114 +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" + +#: views.py:48 msgid "Send" msgstr "" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/mailer/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/mailer/locale/zh_CN/LC_MESSAGES/django.mo index d8ab2ea206..2caa55a542 100644 Binary files a/mayan/apps/mailer/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/mailer/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mailer/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/mailer/locale/zh_CN/LC_MESSAGES/django.po index 68d6790c07..73391a6ef5 100644 --- a/mayan/apps/mailer/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/mailer/locale/zh_CN/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2015-08-20 19:16+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,39 +17,39 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:25 +#: apps.py:26 msgid "Mailer" msgstr "" -#: apps.py:37 +#: apps.py:38 msgid "Date and time" msgstr "" -#: apps.py:41 models.py:16 +#: apps.py:42 models.py:16 msgid "Message" msgstr "" -#: forms.py:29 +#: forms.py:36 msgid "Email address" msgstr "" -#: forms.py:30 +#: forms.py:37 msgid "Subject" msgstr "" -#: forms.py:32 +#: forms.py:39 msgid "Body" msgstr "" -#: links.py:14 +#: links.py:14 links.py:21 msgid "Email document" msgstr "" -#: links.py:18 +#: links.py:18 links.py:24 msgid "Email link" msgstr "" -#: links.py:22 views.py:31 +#: links.py:28 views.py:23 msgid "Document mailing error log" msgstr "" @@ -123,34 +123,26 @@ msgstr "" msgid "Template for the document email form body line." msgstr "" -#: views.py:56 -msgid "Must provide at least one document." -msgstr "至少要有一个文档" - -#: views.py:105 -msgid "Successfully queued for delivery via email." +#: views.py:35 +#, python-format +msgid "%(count)d document queued for email delivery" msgstr "" -#: views.py:114 +#: views.py:37 +#, python-format +msgid "%(count)d documents queued for email delivery" +msgstr "" + +#: views.py:48 msgid "Send" msgstr "" -#: views.py:120 +#: views.py:100 #, python-format -msgid "Email document: %s" +msgid "%(count)d document link queued for email delivery" msgstr "" -#: views.py:122 +#: views.py:102 #, python-format -msgid "Email link for document: %s" -msgstr "" - -#: views.py:125 -#, python-format -msgid "Email documents: %s" -msgstr "" - -#: views.py:127 -#, python-format -msgid "Email links for documents: %s" +msgid "%(count)d document links queued for email delivery" msgstr "" diff --git a/mayan/apps/metadata/api_views.py b/mayan/apps/metadata/api_views.py index 7c7a6070f0..4d16d62d8f 100644 --- a/mayan/apps/metadata/api_views.py +++ b/mayan/apps/metadata/api_views.py @@ -2,8 +2,7 @@ from __future__ import absolute_import, unicode_literals from django.shortcuts import get_object_or_404 -from rest_framework import generics, status, views -from rest_framework.response import Response +from rest_framework import generics from acls.models import AccessControlList from documents.models import Document, DocumentType @@ -13,7 +12,7 @@ from documents.permissions import ( from rest_api.filters import MayanObjectPermissionsFilter from rest_api.permissions import MayanPermission -from .models import DocumentMetadata, DocumentTypeMetadataType, MetadataType +from .models import MetadataType from .permissions import ( permission_metadata_document_add, permission_metadata_document_remove, permission_metadata_document_edit, permission_metadata_document_view, @@ -21,283 +20,315 @@ from .permissions import ( permission_metadata_type_edit, permission_metadata_type_view ) from .serializers import ( - DocumentMetadataSerializer, DocumentNewMetadataSerializer, - DocumentTypeNewMetadataTypeSerializer, MetadataTypeSerializer, - DocumentTypeMetadataTypeSerializer + DocumentMetadataSerializer, DocumentTypeMetadataTypeSerializer, + MetadataTypeSerializer, NewDocumentMetadataSerializer, + NewDocumentTypeMetadataTypeSerializer, + WritableDocumentTypeMetadataTypeSerializer ) -class APIMetadataTypeListView(generics.ListCreateAPIView): - serializer_class = MetadataTypeSerializer - queryset = MetadataType.objects.all() +class APIDocumentMetadataListView(generics.ListCreateAPIView): + def get(self, *args, **kwargs): + """ + Returns a list of selected document's metadata types and values. + """ - permission_classes = (MayanPermission,) + return super(APIDocumentMetadataListView, self).get(*args, **kwargs) + + def get_document(self): + if self.request.method == 'GET': + permission_required = permission_metadata_document_view + else: + permission_required = permission_metadata_document_add + + document = get_object_or_404( + Document, pk=self.kwargs['document_pk'] + ) + + AccessControlList.objects.check_access( + permissions=permission_required, user=self.request.user, + obj=document + ) + + return document + + def get_queryset(self): + return self.get_document().metadata.all() + + def get_serializer_class(self): + if self.request.method == 'GET': + return DocumentMetadataSerializer + else: + return NewDocumentMetadataSerializer + + def get_serializer_context(self): + """ + Extra context provided to the serializer class. + """ + + return { + 'document': self.get_document(), + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } + + def post(self, *args, **kwargs): + """ + Add an existing metadata type and value to the selected document. + """ + + return super(APIDocumentMetadataListView, self).post(*args, **kwargs) + + +class APIDocumentMetadataView(generics.RetrieveUpdateDestroyAPIView): + lookup_url_kwarg = 'metadata_pk' + + def delete(self, *args, **kwargs): + """ + Remove this metadata entry from the selected document. + """ + + return super(APIDocumentMetadataView, self).delete(*args, **kwargs) + + def get(self, *args, **kwargs): + """ + Return the details of the selected document metadata type and value. + """ + + return super(APIDocumentMetadataView, self).get(*args, **kwargs) + + def get_document(self): + if self.request.method == 'GET': + permission_required = permission_metadata_document_view + elif self.request.method == 'PUT': + permission_required = permission_metadata_document_edit + elif self.request.method == 'PATCH': + permission_required = permission_metadata_document_edit + elif self.request.method == 'DELETE': + permission_required = permission_metadata_document_remove + + document = get_object_or_404( + Document, pk=self.kwargs['document_pk'] + ) + + AccessControlList.objects.check_access( + permissions=permission_required, user=self.request.user, + obj=document + ) + + return document + + def get_queryset(self): + return self.get_document().metadata.all() + + def get_serializer_class(self): + if self.request.method == 'GET': + return DocumentMetadataSerializer + else: + return DocumentMetadataSerializer + + def patch(self, *args, **kwargs): + """ + Edit the selected document metadata type and value. + """ + + return super(APIDocumentMetadataView, self).patch(*args, **kwargs) + + def put(self, *args, **kwargs): + """ + Edit the selected document metadata type and value. + """ + + return super(APIDocumentMetadataView, self).put(*args, **kwargs) + + +class APIMetadataTypeListView(generics.ListCreateAPIView): filter_backends = (MayanObjectPermissionsFilter,) mayan_object_permissions = {'GET': (permission_metadata_type_view,)} mayan_view_permissions = {'POST': (permission_metadata_type_create,)} + permission_classes = (MayanPermission,) + queryset = MetadataType.objects.all() + serializer_class = MetadataTypeSerializer def get(self, *args, **kwargs): """ Returns a list of all the metadata types. """ + return super(APIMetadataTypeListView, self).get(*args, **kwargs) def post(self, *args, **kwargs): """ Create a new metadata type. """ + return super(APIMetadataTypeListView, self).post(*args, **kwargs) class APIMetadataTypeView(generics.RetrieveUpdateDestroyAPIView): - serializer_class = MetadataTypeSerializer - queryset = MetadataType.objects.all() - - permission_classes = (MayanPermission,) + lookup_url_kwarg = 'metadata_type_pk' mayan_object_permissions = { 'GET': (permission_metadata_type_view,), 'PUT': (permission_metadata_type_edit,), 'PATCH': (permission_metadata_type_edit,), 'DELETE': (permission_metadata_type_delete,) } + permission_classes = (MayanPermission,) + queryset = MetadataType.objects.all() + serializer_class = MetadataTypeSerializer def delete(self, *args, **kwargs): """ Delete the selected metadata type. """ + return super(APIMetadataTypeView, self).delete(*args, **kwargs) def get(self, *args, **kwargs): """ Return the details of the selected metadata type. """ + return super(APIMetadataTypeView, self).get(*args, **kwargs) def patch(self, *args, **kwargs): """ Edit the selected metadata type. """ + return super(APIMetadataTypeView, self).patch(*args, **kwargs) def put(self, *args, **kwargs): """ Edit the selected metadata type. """ + return super(APIMetadataTypeView, self).put(*args, **kwargs) -class APIDocumentMetadataListView(generics.ListCreateAPIView): - permission_classes = (MayanPermission,) - - def get_document(self): - return get_object_or_404(Document, pk=self.kwargs['pk']) - - def get_queryset(self): - document = self.get_document() - - if self.request.method == 'GET': - # Make sure the use has the permission to see the metadata for - # this document - AccessControlList.objects.check_access( - permissions=permission_metadata_document_view, - user=self.request.user, obj=document - ) - - return document.metadata.all() - elif self.request.method == 'POST': - # Make sure the use has the permission to add metadata to this - # document - AccessControlList.objects.check_access( - permissions=permission_metadata_document_add, - user=self.request.user, obj=document - ) - - return document.metadata.all() - - def get_serializer_class(self): - if self.request.method == 'GET': - return DocumentMetadataSerializer - elif self.request.method == 'POST': - return DocumentNewMetadataSerializer +class APIDocumentTypeMetadataTypeListView(generics.ListCreateAPIView): + lookup_url_kwarg = 'metadata_type_pk' def get(self, *args, **kwargs): """ - Returns a list of selected document's metadata types and values. + Returns a list of selected document type's metadata types. """ - return super(APIDocumentMetadataListView, self).get(*args, **kwargs) - def perform_create(self, serializer): - serializer.document = self.get_document() - serializer.save() + return super( + APIDocumentTypeMetadataTypeListView, self + ).get(*args, **kwargs) - def post(self, *args, **kwargs): - """ - Add an existing metadata type and value to the selected document. - """ - return super(APIDocumentMetadataListView, self).post(*args, **kwargs) + def get_document_type(self): + if self.request.method == 'GET': + permission_required = permission_document_type_view + else: + permission_required = permission_document_type_edit - -class APIDocumentMetadataView(generics.RetrieveUpdateDestroyAPIView): - serializer_class = DocumentMetadataSerializer - queryset = DocumentMetadata.objects.all() - - permission_classes = (MayanPermission,) - mayan_object_permissions = { - 'GET': (permission_metadata_document_view,), - 'PUT': (permission_metadata_document_edit,), - 'PATCH': (permission_metadata_document_edit,), - 'DELETE': (permission_metadata_document_remove,) - } - - def delete(self, *args, **kwargs): - """ - Delete the selected document metadata type and value. - """ - try: - return super( - APIDocumentMetadataView, self - ).delete(*args, **kwargs) - except Exception as exception: - return Response( - status=status.HTTP_400_BAD_REQUEST, data={ - 'non_fields_errors': unicode(exception) - } - ) - - def get(self, *args, **kwargs): - """ - Return the details of the selected document metadata type and value. - """ - return super(APIDocumentMetadataView, self).get(*args, **kwargs) - - def patch(self, *args, **kwargs): - """ - Edit the selected document metadata type and value. - """ - try: - return super( - APIDocumentMetadataView, self - ).patch(*args, **kwargs) - except Exception as exception: - return Response( - status=status.HTTP_400_BAD_REQUEST, data={ - 'non_fields_errors': unicode(exception) - } - ) - - def put(self, *args, **kwargs): - """ - Edit the selected document metadata type and value. - """ - try: - return super(APIDocumentMetadataView, self).put(*args, **kwargs) - except Exception as exception: - return Response( - status=status.HTTP_400_BAD_REQUEST, data={ - 'non_fields_errors': unicode(exception) - } - ) - - -class APIDocumentTypeMetadataTypeOptionalListView(generics.ListCreateAPIView): - permission_classes = (MayanPermission,) - - mayan_view_permissions = {'POST': (permission_document_type_edit,)} - - required_metadata = False - - def get_queryset(self): document_type = get_object_or_404( DocumentType, pk=self.kwargs['document_type_pk'] ) + AccessControlList.objects.check_access( - permissions=permission_document_type_view, user=self.request.user, + permissions=permission_required, user=self.request.user, obj=document_type ) - return document_type.metadata.filter(required=self.required_metadata) + return document_type - def get(self, *args, **kwargs): - """ - Returns a list of selected document type's optional metadata types. - """ - return super( - APIDocumentTypeMetadataTypeOptionalListView, self - ).get(*args, **kwargs) + def get_queryset(self): + return self.get_document_type().metadata.all() def get_serializer_class(self): if self.request.method == 'GET': return DocumentTypeMetadataTypeSerializer - elif self.request.method == 'POST': - return DocumentTypeNewMetadataTypeSerializer + else: + return NewDocumentTypeMetadataTypeSerializer - def post(self, request, *args, **kwargs): + def get_serializer_context(self): """ - Add an optional metadata type to a document type. + Extra context provided to the serializer class. """ + + return { + 'document_type': self.get_document_type(), + 'format': self.format_kwarg, + 'request': self.request, + 'view': self + } + + def post(self, *args, **kwargs): + """ + Add a metadata type to the selected document type. + """ + + return super( + APIDocumentTypeMetadataTypeListView, self + ).post(*args, **kwargs) + + +class APIDocumentTypeMetadataTypeView(generics.RetrieveUpdateDestroyAPIView): + lookup_url_kwarg = 'metadata_type_pk' + serializer_class = DocumentTypeMetadataTypeSerializer + + def delete(self, *args, **kwargs): + """ + Remove a metadata type from a document type. + """ + + return super( + APIDocumentTypeMetadataTypeView, self + ).delete(*args, **kwargs) + + def get(self, *args, **kwargs): + """ + Retrieve the details of a document type metadata type. + """ + + return super( + APIDocumentTypeMetadataTypeView, self + ).get(*args, **kwargs) + + def get_document_type(self): + if self.request.method == 'GET': + permission_required = permission_document_type_view + else: + permission_required = permission_document_type_edit + document_type = get_object_or_404( DocumentType, pk=self.kwargs['document_type_pk'] ) AccessControlList.objects.check_access( - permissions=permission_document_type_edit, user=self.request.user, + permissions=permission_required, user=self.request.user, obj=document_type ) - serializer = self.get_serializer(data=self.request.POST) + return document_type - if serializer.is_valid(): - metadata_type = get_object_or_404( - MetadataType, pk=serializer.data['metadata_type_pk'] - ) - document_type_metadata_type = document_type.metadata.create( - metadata_type=metadata_type, required=self.required_metadata - ) - return Response( - status=status.HTTP_201_CREATED, - data={ - 'pk': document_type_metadata_type.pk - } - ) + def get_queryset(self): + return self.get_document_type().metadata.all() + + def get_serializer_class(self): + if self.request.method == 'GET': + return DocumentTypeMetadataTypeSerializer else: - return Response(status=status.HTTP_400_BAD_REQUEST) + return WritableDocumentTypeMetadataTypeSerializer - -class APIDocumentTypeMetadataTypeRequiredListView(APIDocumentTypeMetadataTypeOptionalListView): - required_metadata = True - - def get(self, *args, **kwargs): + def patch(self, *args, **kwargs): """ - Returns a list of the selected document type's required metadata - types. + Edit the selected document type metadata type. """ + return super( - APIDocumentTypeMetadataTypeRequiredListView, self - ).get(*args, **kwargs) + APIDocumentTypeMetadataTypeView, self + ).patch(*args, **kwargs) - def post(self, request, *args, **kwargs): + def put(self, *args, **kwargs): """ - Add a required metadata type to a document type. + Edit the selected document type metadata type. """ + return super( - APIDocumentTypeMetadataTypeRequiredListView, self - ).post(request, *args, **kwargs) - - -class APIDocumentTypeMetadataTypeView(views.APIView): - def delete(self, request, *args, **kwargs): - """ - Remove a metadata type from a document type. - """ - - document_type_metadata_type = get_object_or_404( - DocumentTypeMetadataType, pk=self.kwargs['pk'] - ) - - AccessControlList.objects.check_access( - permissions=permission_document_type_edit, user=self.request.user, - obj=document_type_metadata_type.document_type - ) - - document_type_metadata_type.delete() - return Response(status=status.HTTP_204_NO_CONTENT) + APIDocumentTypeMetadataTypeView, self + ).put(*args, **kwargs) diff --git a/mayan/apps/metadata/apps.py b/mayan/apps/metadata/apps.py index bbac674ad4..4463d936d9 100644 --- a/mayan/apps/metadata/apps.py +++ b/mayan/apps/metadata/apps.py @@ -47,8 +47,8 @@ logger = logging.getLogger(__name__) class MetadataApp(MayanAppConfig): + has_tests = True name = 'metadata' - test = True verbose_name = _('Metadata') def ready(self): diff --git a/mayan/apps/metadata/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/ar/LC_MESSAGES/django.mo index 6f20d3280a..357e2d1004 100644 Binary files a/mayan/apps/metadata/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/ar/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/ar/LC_MESSAGES/django.po index f55324a8bc..494e248d83 100644 --- a/mayan/apps/metadata/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/ar/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -19,53 +19,54 @@ msgstr "" "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" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "البيانات الوصفية" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "قيمة" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "نوع البيانات الوصفية" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "قيمة البيانات الوصفية" @@ -101,12 +102,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "إزالة" @@ -138,11 +143,11 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "تحرير" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "أنواع البيانات الوصفية" @@ -198,39 +203,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "نوع الوثيقة" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -270,77 +275,33 @@ msgstr "حذف نوع من البيانات الوصفية" msgid "View metadata types" msgstr "عرض أنواع البيانات الوصفية" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "يجب أن توفر ما لا يقل عن وثيقة واحدة." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." +#: views.py:43 +#, python-format +msgid "Metadata add request performed on %(count)d documents" msgstr "" -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - -#: views.py:139 -#, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." msgstr "" -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "تم تعديل البيانات الوصفية للوثيقة %s بنجاح" +#: views.py:95 +msgid "Add" +msgstr "إضافة" -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "" - -#: views.py:272 -#, python-format -msgid "" -"Metadata type: %(metadata_type)s successfully added to document " -"%(document)s." -msgstr "تم اضافة نوع البيانات الوصفية %(metadata_type)s بنجاح للوثيقة %(document)s ." - -#: views.py:282 -#, python-format -msgid "" -"Metadata type: %(metadata_type)s already present in document %(document)s." -msgstr "نوع البيانات الوصفية %(metadata_type)s موجود مسبقا للوثيقة %(document)s ." - -#: views.py:313 +#: views.py:97 msgid "Add metadata types to document" msgid_plural "Add metadata types to documents" msgstr[0] "" @@ -350,21 +311,75 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: views.py:429 +#: views.py:108 +#, python-format +msgid "Add metadata types to document: %s" +msgstr "" + +#: views.py:152 #, python-format msgid "" -"Successfully remove metadata type \"%(metadata_type)s\" from document: " +"Metadata type: %(metadata_type)s successfully added to document " "%(document)s." -msgstr "" +msgstr "تم اضافة نوع البيانات الوصفية %(metadata_type)s بنجاح للوثيقة %(document)s ." -#: views.py:439 +#: views.py:162 #, python-format msgid "" -"Error removing metadata type \"%(metadata_type)s\" from document: " -"%(document)s; %(exception)s" +"Metadata type: %(metadata_type)s already present in document %(document)s." +msgstr "نوع البيانات الوصفية %(metadata_type)s موجود مسبقا للوثيقة %(document)s ." + +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" msgstr "" -#: views.py:461 +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "قم بتعديل البيانات الوصفية للوثيقة: %s" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "تم تعديل البيانات الوصفية للوثيقة %s بنجاح" + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 msgid "Remove metadata types from the document" msgid_plural "Remove metadata types from the documents" msgstr[0] "" @@ -374,49 +389,81 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: views.py:504 +#: views.py:408 #, python-format -msgid "Metadata for document: %s" +msgid "Remove metadata types from the document: %s" msgstr "" -#: views.py:513 +#: views.py:455 +#, python-format +msgid "" +"Successfully remove metadata type \"%(metadata_type)s\" from document: " +"%(document)s." +msgstr "" + +#: views.py:465 +#, python-format +msgid "" +"Error removing metadata type \"%(metadata_type)s\" from document: " +"%(document)s; %(exception)s" +msgstr "" + +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" +#~ msgstr[2] "bae23547be942683f3c566589b362141_pl_2" +#~ msgstr[3] "bae23547be942683f3c566589b362141_pl_3" +#~ msgstr[4] "bae23547be942683f3c566589b362141_pl_4" +#~ msgstr[5] "bae23547be942683f3c566589b362141_pl_5" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/bg/LC_MESSAGES/django.mo index 8fa341dd15..2b592a2cd0 100644 Binary files a/mayan/apps/metadata/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/bg/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/bg/LC_MESSAGES/django.po index 6fc0b44d0c..1285c0e77b 100644 --- a/mayan/apps/metadata/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/bg/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -19,53 +19,54 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Стойност" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Стойност на мета данни" @@ -101,12 +102,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Премахване" @@ -138,11 +143,11 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "Редактиране" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "" @@ -198,39 +203,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Вид на документа" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -270,137 +275,179 @@ msgstr "" msgid "View metadata types" msgstr "" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Трябва да посочите поне един документ." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." +#: views.py:43 +#, python-format +msgid "Metadata add request performed on %(count)d documents" msgstr "" -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" + +#: views.py:95 +msgid "Add" +msgstr "Добави" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" msgstr[0] "" msgstr[1] "" -#: views.py:139 +#: views.py:108 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgid "Add metadata types to document: %s" msgstr "" -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "" - -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "" -msgstr[1] "" - -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "" - -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "" -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "" -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" + +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" msgstr[0] "" msgstr[1] "" -#: views.py:429 +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "" -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "" -msgstr[1] "" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/bs_BA/LC_MESSAGES/django.mo index 0706344f25..59a73f5751 100644 Binary files a/mayan/apps/metadata/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/bs_BA/LC_MESSAGES/django.po index e3e01b024c..f87695ab6f 100644 --- a/mayan/apps/metadata/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/bs_BA/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -19,53 +19,54 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Metadata" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Vrijednost" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Metadata tip" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Metadata vrijednost" @@ -101,12 +102,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Ukloni" @@ -138,11 +143,11 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "Urediti" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "Metadata tip" @@ -198,39 +203,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Tip dokumenta" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -270,141 +275,183 @@ msgstr "Izbriši metadata tip" msgid "View metadata types" msgstr "Pregledaj metadata tip" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Mora se osigurati bar jedan dokument." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." +#: views.py:43 +#, python-format +msgid "Metadata add request performed on %(count)d documents" msgstr "" -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -#: views.py:139 -#, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." msgstr "" -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "Metadata za dokument %s uspješno izmjenjen." +#: views.py:95 +msgid "Add" +msgstr "Dodati" -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "" - -#: views.py:272 -#, python-format -msgid "" -"Metadata type: %(metadata_type)s successfully added to document " -"%(document)s." -msgstr "Metadata tip: %(metadata_type)s uspješno dodan u dokument %(document)s." - -#: views.py:282 -#, python-format -msgid "" -"Metadata type: %(metadata_type)s already present in document %(document)s." -msgstr "Metadata tip: %(metadata_type)s već postoji u dokumentu %(document)s." - -#: views.py:313 +#: views.py:97 msgid "Add metadata types to document" msgid_plural "Add metadata types to documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:429 +#: views.py:108 +#, python-format +msgid "Add metadata types to document: %s" +msgstr "" + +#: views.py:152 #, python-format msgid "" -"Successfully remove metadata type \"%(metadata_type)s\" from document: " +"Metadata type: %(metadata_type)s successfully added to document " "%(document)s." -msgstr "" +msgstr "Metadata tip: %(metadata_type)s uspješno dodan u dokument %(document)s." -#: views.py:439 +#: views.py:162 #, python-format msgid "" -"Error removing metadata type \"%(metadata_type)s\" from document: " -"%(document)s; %(exception)s" +"Metadata type: %(metadata_type)s already present in document %(document)s." +msgstr "Metadata tip: %(metadata_type)s već postoji u dokumentu %(document)s." + +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" msgstr "" -#: views.py:461 +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "Izmjeni metadata za dokument: %s" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "Metadata za dokument %s uspješno izmjenjen." + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 msgid "Remove metadata types from the document" msgid_plural "Remove metadata types from the documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:504 +#: views.py:408 #, python-format -msgid "Metadata for document: %s" +msgid "Remove metadata types from the document: %s" msgstr "" -#: views.py:513 +#: views.py:455 +#, python-format +msgid "" +"Successfully remove metadata type \"%(metadata_type)s\" from document: " +"%(document)s." +msgstr "" + +#: views.py:465 +#, python-format +msgid "" +"Error removing metadata type \"%(metadata_type)s\" from document: " +"%(document)s; %(exception)s" +msgstr "" + +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" +#~ msgstr[2] "bae23547be942683f3c566589b362141_pl_2" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/da/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/da/LC_MESSAGES/django.mo index 6662d5afe8..7f83486388 100644 Binary files a/mayan/apps/metadata/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/da/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/da/LC_MESSAGES/django.po index de0dec79b7..1c5353ff42 100644 --- a/mayan/apps/metadata/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/da/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -19,53 +19,54 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Metadata type" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Metadata værdi" @@ -101,12 +102,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "" @@ -138,11 +143,11 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "" @@ -198,39 +203,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Dokumenttype" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -270,137 +275,179 @@ msgstr "" msgid "View metadata types" msgstr "" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Angiv mindst ét ​​dokument." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." +#: views.py:43 +#, python-format +msgid "Metadata add request performed on %(count)d documents" msgstr "" -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" + +#: views.py:95 +msgid "Add" +msgstr "" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" msgstr[0] "" msgstr[1] "" -#: views.py:139 +#: views.py:108 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgid "Add metadata types to document: %s" msgstr "" -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "" - -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "" -msgstr[1] "" - -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "" - -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "" -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "" -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" + +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" msgstr[0] "" msgstr[1] "" -#: views.py:429 +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "" -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "" -msgstr[1] "" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/de_DE/LC_MESSAGES/django.mo index 10e9d47bae..6cc7a7f136 100644 Binary files a/mayan/apps/metadata/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/de_DE/LC_MESSAGES/django.po index 4c07c4c086..ad9b2e8ed6 100644 --- a/mayan/apps/metadata/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/de_DE/LC_MESSAGES/django.po @@ -5,6 +5,7 @@ # Translators: # Translators: # Berny , 2015 +# Jesaja Everling , 2017 # Mathias Behrle , 2014 # Stefan Lodders , 2012 # Tobias Paepke , 2014,2016 @@ -12,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-31 19:03+0000\n" -"Last-Translator: Tobias Paepke \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-24 23:12+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,53 +23,54 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Metadaten" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "Dokumente mit fehlenden erforderlichen Metadaten" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "Dokumente mit fehlenden optionalen Metadaten" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "Queryset enthaltend eine Referenz auf eine Metadatentyp Instanz und einen Wert für diesen Metadatentyp" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "Name Metadatentyp" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "Metadatentypwert" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "Metadatenwert" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "Gibt den Wert einer spezifischen Dokumentmetadatums zurück" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Wert" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "erforderlich" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Metadatentyp" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Metadatenwert" @@ -104,12 +106,16 @@ msgstr "Fehler für Standardwert: %s" msgid "\"%s\" is required for this document type." msgstr "\"%s\" wird für diesen Dokumententyp benötigt." -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "Metadatentypen für die ausgewählten Dokumente." + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "Verfügbare Kontextvariablen:" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Entfernen" @@ -141,11 +147,11 @@ msgstr "Erstellen" msgid "Delete" msgstr "Löschen" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "Bearbeiten" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "Metadatentypen" @@ -201,39 +207,39 @@ msgstr "Der Parser wird den eingegebenen Wert so reformatieren, dass er dem gefo msgid "Parser" msgstr "Parser" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "Der Wert entspricht keiner der vorgegebenen Optionen." -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "Dokument" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "Typ" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "Metadatentyp ist erforderlich für diesen Dokumententyp" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "Metadatentyp ist nicht gültig für diesen Dokumententyp" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "Dokument Metadaten" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Dokumententyp" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "Metadatentyp Optionen" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "Metadatentyp Optionen" @@ -273,137 +279,179 @@ msgstr "Metadatentypen löschen" msgid "View metadata types" msgstr "Metadatentypen anzeigen" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "Primärschlüssel des hinzuzufügenden Metadatentyps" -#: serializers.py:40 -msgid "Primary key of the document metadata type." -msgstr "Primärschlüssel des Metadatendokumententyps." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." +msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." -msgstr "Wert der entsprechenden Metadatentyp-Instanz" - -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Es muss mindestens ein Dokument angegeben werden" - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." -msgstr "Es können nur Dokumente des gleichen Typs ausgewählt werden" - -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "Für das ausgewählte Dokument existieren keine Metadaten" -msgstr[1] "Für die ausgewählten Dokumente existieren keine Metadaten" - -#: views.py:139 +#: views.py:41 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." -msgstr "Fehler bei der Bearbeitung der Metadaten für Dokument %(document)s: %(exception)s" +msgid "Metadata add request performed on %(count)d document" +msgstr "" -#: views.py:150 +#: views.py:43 #, python-format -msgid "Metadata for document %s edited successfully." -msgstr "Metadaten des Dokuments %s erfolgreich bearbeitet." +msgid "Metadata add request performed on %(count)d documents" +msgstr "" -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "Metadaten bearbeiten" -msgstr[1] "Metadaten bearbeiten" +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" -#: views.py:256 +#: views.py:95 +msgid "Add" +msgstr "Hinzufügen" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" +msgstr[0] "Metadatentypen zu Dokument hinzufügen" +msgstr[1] "Metadatentypen zu Dokumenten hinzufügen" + +#: views.py:108 #, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "Fehler beim Hinzufügen von Metadatentyp \"%(metadata_type)s\" zu Dokument %(document)s: %(exception)s" +msgid "Add metadata types to document: %s" +msgstr "" -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "Metadatentyp %(metadata_type)s erfolgreich hinzugefügt zu Dokument %(document)s" -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "Metadatentyp %(metadata_type)s bereits vorhanden für Dokument %(document)s" -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" -msgstr[0] "Metadatentypen zu Dokument hinzufügen" -msgstr[1] "Metadatentypen zu Dokumenten hinzufügen" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" -#: views.py:429 +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" +msgstr[0] "Metadaten bearbeiten" +msgstr[1] "Metadaten bearbeiten" + +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "Metadaten des Dokuments %s bearbeiten" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "Fehler bei der Bearbeitung der Metadaten für Dokument %(document)s: %(exception)s" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "Metadaten des Dokuments %s erfolgreich bearbeitet." + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "Metadaten von Dokument %s" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "Metadatentypen von Dokument entfernen" +msgstr[1] "Metadatentypen von Dokumenten entfernen" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "Metadatentyp \"%(metadata_type)s\" erfolgreich entfernt von Dokument %(document)s" -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "Fehler bei der Entfernung von Metadatentyp \"%(metadata_type)s\" von Dokument %(document)s: %(exception)s" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "Metadatentypen von Dokument entfernen" -msgstr[1] "Metadatentypen von Dokumenten entfernen" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "Metadaten von Dokument %s" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "Metadatentyp erstellen" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "Metadatentyp %s löschen?" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "Metadatentyp %s bearbeiten" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "Interner Name" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "Verfügbare Metadatentypen" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "Zugewiesene Metadatentypen" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "Optionale Metadatentypen für Dokumententyp %s" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "Erforderliche Metadatentypen für Dokumententyp %s" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/en/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/en/LC_MESSAGES/django.mo index 63994bec65..0390dcea16 100644 Binary files a/mayan/apps/metadata/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/en/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/en/LC_MESSAGES/django.po index dca3b971ba..6436c1d3aa 100644 --- a/mayan/apps/metadata/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2012-12-12 06:06+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,59 +18,60 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Metadata" -#: apps.py:76 +#: apps.py:79 #, fuzzy msgid "Documents missing required metadata" msgstr "document metadata" -#: apps.py:93 +#: apps.py:96 #, fuzzy msgid "Documents missing optional metadata" msgstr "document metadata" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 #, fuzzy msgid "Metadata type name" msgstr "Metadata type" -#: apps.py:121 +#: apps.py:124 #, fuzzy msgid "Metadata type value" msgstr "Metadata type" -#: apps.py:125 +#: apps.py:128 #, fuzzy msgid "Value of a metadata" msgstr "default metadata" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Value" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 #, fuzzy msgid "Required" msgstr "required" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Metadata type" -#: apps.py:176 +#: apps.py:186 apps.py:195 #, fuzzy msgid "Metadata value" msgstr "Metadata type" @@ -107,13 +108,18 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "Add metadata type to document: %s" -#: forms.py:130 +#: forms.py:112 +#, fuzzy +msgid "Metadata types to be added to the selected documents." +msgstr "Add metadata type to document: %s" + +#: forms.py:141 #, fuzzy #| msgid " Available models: %s" msgid " Available template context variables: " msgstr " Available models: %s" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Remove" @@ -152,11 +158,11 @@ msgstr "create new" msgid "Delete" msgstr "delete" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "Metadata types" @@ -214,45 +220,45 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 #, fuzzy msgid "Document" msgstr "document" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "" -#: models.py:167 +#: models.py:168 #, fuzzy msgid "Metadata type is required for this document type." msgstr "Add metadata type to document: %s" -#: models.py:175 +#: models.py:176 #, fuzzy msgid "Metadata type is not valid for this document type." msgstr "Add metadata type to document: %s" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 #, fuzzy msgid "Document metadata" msgstr "document metadata" -#: models.py:203 +#: models.py:204 #, fuzzy msgid "Document type" msgstr "document type" -#: models.py:215 +#: models.py:216 #, fuzzy msgid "Document type metadata type options" msgstr "Delete metadata types" -#: models.py:216 +#: models.py:217 #, fuzzy msgid "Document type metadata types options" msgstr "Delete metadata types" @@ -293,82 +299,120 @@ msgstr "Delete metadata types" msgid "View metadata types" msgstr "View metadata types" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 +#: serializers.py:130 #, fuzzy -msgid "Primary key of the document metadata type." +msgid "Primary key of the metadata type to be added to the document." msgstr "Edit a document's metadata" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Must provide at least one document." +#: views.py:43 +#, python-format +msgid "Metadata add request performed on %(count)d documents" +msgstr "" -#: views.py:66 views.py:196 views.py:361 +#: views.py:56 views.py:192 views.py:358 #, fuzzy -msgid "Only select documents of the same type." +msgid "Selected documents must be of the same type." msgstr "The selected document doesn't have any metadata." -#: views.py:75 views.py:370 -#, fuzzy -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "The selected document doesn't have any metadata." -msgstr[1] "The selected document doesn't have any metadata." - -#: views.py:139 -#, fuzzy, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." -msgstr "Error editing metadata for document %(document)s; %(error)s." - -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "Metadata for document %s edited successfully." - -#: views.py:168 -#, fuzzy -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "Edit a document's metadata" -msgstr[1] "Edit a document's metadata" - -#: views.py:256 -#, fuzzy, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" +#: views.py:95 +msgid "Add" msgstr "" -"Error removing metadata type: %(metadata_type)s from document: %(document)s." -#: views.py:272 -#, python-format -msgid "" -"Metadata type: %(metadata_type)s successfully added to document %(document)s." -msgstr "" -"Metadata type: %(metadata_type)s successfully added to document %(document)s." - -#: views.py:282 -#, python-format -msgid "" -"Metadata type: %(metadata_type)s already present in document %(document)s." -msgstr "" -"Metadata type: %(metadata_type)s already present in document %(document)s." - -#: views.py:313 +#: views.py:97 #, fuzzy msgid "Add metadata types to document" msgid_plural "Add metadata types to documents" msgstr[0] "Add metadata type to documents: %s" msgstr[1] "Add metadata type to documents: %s" -#: views.py:429 +#: views.py:108 +#, fuzzy, python-format +msgid "Add metadata types to document: %s" +msgstr "Add metadata type to documents: %s" + +#: views.py:152 +#, python-format +msgid "" +"Metadata type: %(metadata_type)s successfully added to document %(document)s." +msgstr "" +"Metadata type: %(metadata_type)s successfully added to document %(document)s." + +#: views.py:162 +#, python-format +msgid "" +"Metadata type: %(metadata_type)s already present in document %(document)s." +msgstr "" +"Metadata type: %(metadata_type)s already present in document %(document)s." + +#: views.py:176 +#, fuzzy, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "Add metadata type to document: %s" + +#: views.py:179 +#, fuzzy, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "Add metadata type to document: %s" + +#: views.py:231 +#, fuzzy +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" +msgstr[0] "Edit a document's metadata" +msgstr[1] "Edit a document's metadata" + +#: views.py:242 +#, fuzzy, python-format +msgid "Edit metadata for document: %s" +msgstr "Edit metadata for documents: %s" + +#: views.py:295 +#, fuzzy, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "Error editing metadata for document %(document)s; %(error)s." + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "Metadata for document %s edited successfully." + +#: views.py:330 +#, fuzzy, python-format +msgid "Metadata for document: %s" +msgstr "Edit metadata for documents: %s" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +#, fuzzy +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "Remove metadata types from documents: %s" +msgstr[1] "Remove metadata types from documents: %s" + +#: views.py:408 +#, fuzzy, python-format +msgid "Remove metadata types from the document: %s" +msgstr "Remove metadata types from documents: %s" + +#: views.py:455 #, fuzzy, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " @@ -377,7 +421,7 @@ msgstr "" "Successfully remove metadata type: %(metadata_type)s from document: " "%(document)s." -#: views.py:439 +#: views.py:465 #, fuzzy, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " @@ -385,60 +429,65 @@ msgid "" msgstr "" "Error removing metadata type: %(metadata_type)s from document: %(document)s." -#: views.py:461 -#, fuzzy -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "Remove metadata types from documents: %s" -msgstr[1] "Remove metadata types from documents: %s" - -#: views.py:504 -#, fuzzy, python-format -msgid "Metadata for document: %s" -msgstr "Edit metadata for documents: %s" - -#: views.py:513 +#: views.py:476 #, fuzzy msgid "Create metadata type" msgstr "create metadata type" -#: views.py:529 +#: views.py:492 #, fuzzy, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "Delete metadata types" -#: views.py:542 +#: views.py:505 #, fuzzy, python-format msgid "Edit metadata type: %s" msgstr "edit metadata type: %s" -#: views.py:556 +#: views.py:519 #, fuzzy msgid "Internal name" msgstr "internal name" -#: views.py:568 +#: views.py:531 #, fuzzy #| msgid "View metadata types" msgid "Available metadata types" msgstr "View metadata types" -#: views.py:569 +#: views.py:532 #, fuzzy msgid "Metadata types assigned" msgstr "Metadata type" -#: views.py:600 +#: views.py:563 #, fuzzy, python-format msgid "Optional metadata types for document type: %s" msgstr "Remove metadata types from document: %s" -#: views.py:618 +#: views.py:581 #, fuzzy, python-format msgid "Required metadata types for document type: %s" msgstr "Remove metadata types from document: %s" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#, fuzzy +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "The selected document doesn't have any metadata." +#~ msgstr[1] "The selected document doesn't have any metadata." + +#, fuzzy +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: " +#~ "%(document)s; %(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: " +#~ "%(document)s." + #, fuzzy #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/es/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/es/LC_MESSAGES/django.mo index 78d02904b0..f72f749989 100644 Binary files a/mayan/apps/metadata/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/es/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/es/LC_MESSAGES/django.po index cc51820b24..1ecc54ce71 100644 --- a/mayan/apps/metadata/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/es/LC_MESSAGES/django.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-11-23 06:39+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -22,53 +22,54 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Metadatos" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "Documentos que sin metadatos requeridos" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "Documentos sin metadatos opcionales" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "QuerySet que contiene una referencia de instancia de tipo de meta datos y un valor para ese tipo de meta datos " -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "Nombre del tipo de metadatos" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "Valor del tipo de metadatos" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "Valor de un metadato" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "Retornar al valor de metadata de un documento específico" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Valor" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "Requerido" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Tipo de metadato" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Valor de metadato" @@ -104,12 +105,16 @@ msgstr "Error en valor por defecto: %s" msgid "\"%s\" is required for this document type." msgstr "\"%s\" es requerido para este tipo de documento." -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "Variables de contexto de plantilla disponibles:" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Eliminar" @@ -141,11 +146,11 @@ msgstr "Crear nuevo" msgid "Delete" msgstr "Borrar" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "Editar" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "Tipos de metadatos" @@ -201,39 +206,39 @@ msgstr "El analizador volverá a formatear el valor introducido para ajustarse a msgid "Parser" msgstr "Analizador" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "El valor no es una de las opciones provistas." -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "Documento" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "Tipo" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "El tipo de metadatos es requerido para este tipo de documento." -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "El tipo de metadato no es válido para este tipo de documento." -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "Metadatos de documentos" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Tipo de documento" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "Opciones de tipo de meta datos de tipo de documento " -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "Opciones de tipos de meta datos de tipo de documento " @@ -273,137 +278,179 @@ msgstr "Eliminar tipos de metadatos" msgid "View metadata types" msgstr "Ver los tipos de metadatos" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "Llave principal del tipo de meta datos a ser agregada." -#: serializers.py:40 -msgid "Primary key of the document metadata type." -msgstr "Llave primaria del tipo de metadato del documento." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." +msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." -msgstr "Valor de la instancia de tipo meta datos correspondientes." - -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Debe proveer al menos un documento." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." -msgstr "Sólo seleccionar documentos del mismo tipo." - -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "El documento seleccionado no tiene metadatos." -msgstr[1] "Los documentos seleccionados no tienen metadatos." - -#: views.py:139 +#: views.py:41 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." -msgstr "Error editando metadato para el documento %(document)s; %(exception)s." +msgid "Metadata add request performed on %(count)d document" +msgstr "" -#: views.py:150 +#: views.py:43 #, python-format -msgid "Metadata for document %s edited successfully." -msgstr "Metadatos del documento %s editados con éxito." +msgid "Metadata add request performed on %(count)d documents" +msgstr "" -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "Editar meta datos de documento" -msgstr[1] "Editar meta datos de documentos" +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" -#: views.py:256 +#: views.py:95 +msgid "Add" +msgstr "Agregar" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" +msgstr[0] "Añadir tipos de meta datos al documento" +msgstr[1] "Añadir tipos de meta datos a los documentos" + +#: views.py:108 #, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "Error al añadir tipo de metadatos \"%(metadata_type)s\" al documento: %(document)s; %(exception)s" +msgid "Add metadata types to document: %s" +msgstr "" -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "Tipo de metadatos: %(metadata_type)s añadido con éxito al documento %(document)s." -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "Tipo de metadatos: %(metadata_type)s ya presente en el documento %(document)s." -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" -msgstr[0] "Añadir tipos de meta datos al documento" -msgstr[1] "Añadir tipos de meta datos a los documentos" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" -#: views.py:429 +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" +msgstr[0] "Editar meta datos de documento" +msgstr[1] "Editar meta datos de documentos" + +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "Editar metadatos del documento: %s" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "Error editando metadato para el documento %(document)s; %(exception)s." + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "Metadatos del documento %s editados con éxito." + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "Meta datos para el documento: %s" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "Remover tipos de meta datos del documento" +msgstr[1] "Remover tipos de meta datos de los documentos" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "Remoción con éxito el tipo de meta datos \"%(metadata_type)s\" del documento: %(document)s." -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "Error al eliminar el tipo de metadatos \"%(metadata_type)s\" del documento: %(document)s; %(exception)s" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "Remover tipos de meta datos del documento" -msgstr[1] "Remover tipos de meta datos de los documentos" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "Meta datos para el documento: %s" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "Crear tipo de metadatos" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "¿Borrar el tipo de metadato: %s?" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "Editar tipo de metadatos: %s" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "Nombre interno" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "Tipos de metadatos disponibles" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "Tipos de metadatos asignados" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "Tipos de metadatos opcionales para tipo de documento: %s" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "Tipos de metadata requerida para tipo de documento: %s" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/fa/LC_MESSAGES/django.mo index 77a41754ad..6aadeffac3 100644 Binary files a/mayan/apps/metadata/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/fa/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/fa/LC_MESSAGES/django.po index 6768c807b8..d5a3b9b274 100644 --- a/mayan/apps/metadata/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/fa/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -19,53 +19,54 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "متادیتا" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "اسناد متا داده مورد نیاز را ندارد" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "محتوای مجموعه درخواستها شامل یک نمونه مرجع و یک مقدار برای متا داده مورد نظر است" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "نام نوع متا داده" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "مقدار نوع متاداده" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "مقدار متا داده" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "مقدار خاص مستندات متا داده" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "مقدار" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "الزامی" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "نوع متادیتا" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "مقدار متادیتا" @@ -101,12 +102,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "حذف" @@ -138,11 +143,11 @@ msgstr "ایجاد" msgid "Delete" msgstr "حذف" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "ویرایش" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "انواه متادیتا" @@ -198,39 +203,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "سند" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "نوع" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "نوع متاداده برای این نوع سند مورد نیاز است" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "این نوع از متادیتا برای این نوع سند قابل قبول نیست." -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "متادیتای سند" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "نوع سند" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "متادیتای قابل قبول برای این نوع از سند." -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "متادیتاهای قابل قبول برای این نوع از سند" @@ -270,133 +275,175 @@ msgstr "حذف انواع متادیتا" msgid "View metadata types" msgstr "دیدن انواع متادیتا" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "کلید اولیه برای نوع متا داده اضافه گردد" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." -msgstr "مقدار مرتبط با نوع متا داده" - -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "حداقل یک سند باید ارایه شود." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." -msgstr "فقط اسناد از نوع همسان را انتخاب کنید" - -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "اسناد انتخاب شده هیچ متا داده ای ندارند" - -#: views.py:139 +#: views.py:41 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:150 +#: views.py:43 #, python-format -msgid "Metadata for document %s edited successfully." -msgstr "متادیتای سند %s با موفقیت ویرایش شد." +msgid "Metadata add request performed on %(count)d documents" +msgstr "" -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "اسناد متاداده را ویرایش کنید" +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" -#: views.py:256 +#: views.py:95 +msgid "Add" +msgstr "افزودن" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" +msgstr[0] "ًانواع متا داده را به اسناد اضافه کنید" + +#: views.py:108 #, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "نوع متا داده افزودن خطا \"%(metadata_type)s به سند %(document)s; %(exception)s" +msgid "Add metadata types to document: %s" +msgstr "" -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "جذف موفق متادیتای ندع : %(metadata_type)s برای سند : %(document)s." -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "متادیتای نوع : %(metadata_type)s در سند %(document)s. موجود است." -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" -msgstr[0] "ًانواع متا داده را به اسناد اضافه کنید" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" -#: views.py:429 +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" +msgstr[0] "اسناد متاداده را ویرایش کنید" + +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "ویرایش متادیتای سند : %s" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "متادیتای سند %s با موفقیت ویرایش شد." + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "متا داده برای سند : %s" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "انواع متا داده را از اسناد حذف کنید" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "حذف موفق متادیتای نوع \"%(metadata_type)s\" از سند %(document)s." -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "خطا در حذف متادیتای نوع\"%(metadata_type)s\" ازسند: %(document)s; %(exception)s" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "انواع متا داده را از اسناد حذف کنید" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "متا داده برای سند : %s" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "ایجاد نوع متا دیتا" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "ویرایش نوع متا دیتا : %s" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "نام داخلی" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "متادیتا نوع اختیاری برای نوع ستئ %s" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "متادیتای نوع الزامی برای نوع سند :%s" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/fr/LC_MESSAGES/django.mo index d26681e94e..e5da3672f5 100644 Binary files a/mayan/apps/metadata/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/fr/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/fr/LC_MESSAGES/django.po index 8e705b5f33..4a8f2dd8d8 100644 --- a/mayan/apps/metadata/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/fr/LC_MESSAGES/django.po @@ -4,6 +4,7 @@ # # Translators: # Translators: +# Christophe CHAUVET , 2016 # PatrickHetu , 2012 # Pierre Lhoste , 2012 # SadE54 , 2013 @@ -12,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" @@ -22,53 +23,54 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Métadonnées" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "Documents avec des métadonnées manquantes" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "Documents avec métadonnées optionnelles manquantes" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "Jeu de requête contenant une référence d'instance MetadataType et une valeur pour ce type de métadonnées" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "Nom du type de métadonnée" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "Valeur du type de métadonnée" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "Valeur de la métadonnées" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "Retourne la valeur de la métadonnée du document spécifié" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Valeur" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "Requis" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Type de métadonnée" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Valeur de la métadonnée" @@ -102,14 +104,18 @@ msgstr "Erreur de valeur par défaut : %s" #: forms.py:94 models.py:124 #, python-format msgid "\"%s\" is required for this document type." +msgstr "\"%s\" est requis pour ce type de document." + +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." msgstr "" -#: forms.py:130 +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "Variable de contexte du modèle disponibles :" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Supprimer" @@ -141,11 +147,11 @@ msgstr "Créer une nouvelle" msgid "Delete" msgstr "Supprimer" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "Modifier" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "Types de métadonnées" @@ -201,39 +207,39 @@ msgstr "L'analyseur syntaxique reformatera la valeur saisie pour la rendre confo msgid "Parser" msgstr "Analyseur" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "La valeur saisie ne fait pas partie des options proposées." -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "Document" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "Type" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "Le type de métadonnée est requis pour ce type de document." -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "Le type de métadonnée n'est pas valide pour ce type de document." -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "Métadonnée du document" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Type de document" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "Options de type de document de type de métadonnées" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "Options de type de document des types de métadonnées" @@ -273,137 +279,179 @@ msgstr "Supprimer des types de métadonnées" msgid "View metadata types" msgstr "Voir les types de métadonnées" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "Clé primaire du type de la métadonnée à ajouter." -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." -msgstr "Valeur de l'instance de type de métadonnées correspondantes." - -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Vous devez fournir au moins un document." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." -msgstr "Sélectionner seulement les documents avec le même type." - -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "Le document sélectionné n'a pas de méta-données." -msgstr[1] "Les documents sélectionnés n'ont pas de métadonnées." - -#: views.py:139 +#: views.py:41 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." -msgstr "Erreur lors de la modification des métadonnées du document %(document)s; %(exception)s." +msgid "Metadata add request performed on %(count)d document" +msgstr "" -#: views.py:150 +#: views.py:43 #, python-format -msgid "Metadata for document %s edited successfully." -msgstr "Métadonnées pour le document %s modifiées avec succès." +msgid "Metadata add request performed on %(count)d documents" +msgstr "" -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "Modifier les méta-données du document" -msgstr[1] "Modifier les métadonnées des documents" +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" -#: views.py:256 +#: views.py:95 +msgid "Add" +msgstr "Ajouter" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" +msgstr[0] "Ajouter des types de méta-données au document" +msgstr[1] "Ajouter des types de métadonnées aux documents" + +#: views.py:108 #, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "Erreur lors de l'ajout d'un type de métadonnées \"%(metadata_type)s\" au document: %(document)s; %(exception)s" +msgid "Add metadata types to document: %s" +msgstr "" -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "Le type de métadonnées: %(metadata_type)s ajouter avec succès au document %(document)s." -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "Le type de métadonnée: %(metadata_type)s est déjà présent dans le document %(document)s." -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" -msgstr[0] "Ajouter des types de méta-données au document" -msgstr[1] "Ajouter des types de métadonnées aux documents" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" -#: views.py:429 +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" +msgstr[0] "Modifier les méta-données du document" +msgstr[1] "Modifier les métadonnées des documents" + +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "Modifier les métadonnées pour le document: %s" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "Erreur lors de la modification des métadonnées du document %(document)s; %(exception)s." + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "Métadonnées pour le document %s modifiées avec succès." + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "Métadonnées du document: %s" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "Supprimer les types de métadonnées du document" +msgstr[1] "Supprimer les types de métadonnées des documents" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "Type de métadonnées supprimer avec succès \"%(metadata_type)s\" pour le document: %(document)s." -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "Erreur lors de la suppression du type de métadonnée \"%(metadata_type)s\" pour le document: %(document)s; %(exception)s" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "Supprimer les types de métadonnées du document" -msgstr[1] "Supprimer les types de métadonnées des documents" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "Métadonnées du document: %s" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "Créer un type de métadonnée" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "Êtes vous certain de vouloir supprimer le type de métadonnées : %s?" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "Modifier le type de métadonnée: %s" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "Nom interne" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "Types de métadonnées disponibles" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "Types de métadonnées attribués" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "Types de métadonnées optionnelles pour le type de document: %s" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "Types de métadonnées requises pour le type de document: %s" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/hu/LC_MESSAGES/django.mo index 7befe12136..7048ae4581 100644 Binary files a/mayan/apps/metadata/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/hu/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/hu/LC_MESSAGES/django.po index f553baa2f6..49089d5669 100644 --- a/mayan/apps/metadata/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/hu/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -18,53 +18,54 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Metaadat típus" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Metaadat érték" @@ -100,12 +101,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "" @@ -137,11 +142,11 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "" @@ -197,39 +202,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Dokumentum típus" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -269,137 +274,179 @@ msgstr "" msgid "View metadata types" msgstr "" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Adjon meg legalább egy dokumentumot." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." +#: views.py:43 +#, python-format +msgid "Metadata add request performed on %(count)d documents" msgstr "" -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" + +#: views.py:95 +msgid "Add" +msgstr "" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" msgstr[0] "" msgstr[1] "" -#: views.py:139 +#: views.py:108 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgid "Add metadata types to document: %s" msgstr "" -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "" - -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "" -msgstr[1] "" - -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "" - -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "" -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "" -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" + +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" msgstr[0] "" msgstr[1] "" -#: views.py:429 +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "" -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "" -msgstr[1] "" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/id/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/id/LC_MESSAGES/django.mo index 25923ff24d..5737c6d156 100644 Binary files a/mayan/apps/metadata/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/id/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/id/LC_MESSAGES/django.po index 028716db1e..3ad1e79c7e 100644 --- a/mayan/apps/metadata/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,53 +18,54 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Jenis 'metadata'" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Nilai 'metadata'" @@ -100,12 +101,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "hapus" @@ -137,11 +142,11 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "" @@ -197,39 +202,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Jenis dokumen" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -269,133 +274,175 @@ msgstr "" msgid "View metadata types" msgstr "" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Harus memberikan setidaknya satu dokumen." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." +#: views.py:43 +#, python-format +msgid "Metadata add request performed on %(count)d documents" msgstr "" -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" + +#: views.py:95 +msgid "Add" +msgstr "tambah" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" msgstr[0] "" -#: views.py:139 +#: views.py:108 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgid "Add metadata types to document: %s" msgstr "" -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "" - -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "" - -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "" - -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "" -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "" -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" + +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" msgstr[0] "" -#: views.py:429 +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "" -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/it/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/it/LC_MESSAGES/django.mo index 3afdd8fbc0..ab28908303 100644 Binary files a/mayan/apps/metadata/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/it/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/it/LC_MESSAGES/django.po index 83cc6837ee..b3c60f0a00 100644 --- a/mayan/apps/metadata/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/it/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-30 21:18+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Marco Camplese \n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" @@ -20,53 +20,54 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Metadati" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "Nel documento manca un metadato obbligatorio" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "Nel documento mancano metadati opzionali" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "Queryset che contiene il riferimento all'istanza MetadataType e il valore " -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "Nome tipo metadato" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "Valore del tipo metadato" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "Valore del metadato" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "Ritorna il valore di un metadato specifico del documento" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Valore" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "Obbligatorio" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Tipo di metadato" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Valore metadata" @@ -102,12 +103,16 @@ msgstr "Valore di default errore: %s" msgid "\"%s\" is required for this document type." msgstr "\"%s\" è richiesto per questo tipo di documento.." -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "Variabili di contesto template disponibili:" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Revoca" @@ -139,11 +144,11 @@ msgstr "Crea nuovo" msgid "Delete" msgstr "Cancella" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "Modifica" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "Tipi di Metadati" @@ -199,39 +204,39 @@ msgstr "Il parser riformatta il valore immesso per renderlo conforme al formato msgid "Parser" msgstr "Parser" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "Il valore non è compreso tra i valori ammessi." -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "Documento" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "Tipo" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "Tipo di metadati è necessario per questo tipo di documento." -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "Il metadato non è valido per il tipo di documento" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "Metadata documento" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Tipo documento " -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "Opzione per tipo documento del tipo metadato" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "Opzioni per tipo documento del tipo metadato" @@ -271,137 +276,179 @@ msgstr "Cancella il tipo di metadato" msgid "View metadata types" msgstr "Visualizza il tipo di metadato" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "Chiave primaria del tipo metadato da aggiungere." -#: serializers.py:40 -msgid "Primary key of the document metadata type." -msgstr "Chiave primaria del tipo metadato del documento" +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." +msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." -msgstr "Valore dell'istanza corrispondente del tipo metadato." - -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Devi fornire almeno un documento." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." -msgstr "Selezionare solo documenti dello stesso tipo." - -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "Il documento selezionato non ha nessun tipo di metadato." -msgstr[1] "I documenti selezionati non hanno nessun tipo di metadato." - -#: views.py:139 +#: views.py:41 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." -msgstr "Errore modifica metadato per il documento: %(document)s; %(exception)s." +msgid "Metadata add request performed on %(count)d document" +msgstr "" -#: views.py:150 +#: views.py:43 #, python-format -msgid "Metadata for document %s edited successfully." -msgstr "Metadata per il documento %s modificato con successo." +msgid "Metadata add request performed on %(count)d documents" +msgstr "" -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "Modifica metadato documento" -msgstr[1] "Modifica metadato documenti" +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" -#: views.py:256 +#: views.py:95 +msgid "Add" +msgstr "Aggiungi" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" +msgstr[0] "Aggiungi tipo metadato al documento" +msgstr[1] "Aggiungi tipo metadati ai documenti " + +#: views.py:108 #, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "Errore aggiungendo il tipo metadato \"%(metadata_type)s\" al documento: %(document)s; %(exception)s" +msgid "Add metadata types to document: %s" +msgstr "" -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "Tipo metadata: %(metadata_type)s aggiunto con successo al documento %(document)s." -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "Tipo Metadata: %(metadata_type)s già presente per il documento %(document)s." -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" -msgstr[0] "Aggiungi tipo metadato al documento" -msgstr[1] "Aggiungi tipo metadati ai documenti " +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" -#: views.py:429 +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" +msgstr[0] "Modifica metadato documento" +msgstr[1] "Modifica metadato documenti" + +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "Modifica metadata per il documento: %s" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "Errore modifica metadato per il documento: %(document)s; %(exception)s." + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "Metadata per il documento %s modificato con successo." + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "Metadati per il documento: %s" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "Rimuovi tipi matadato dal documento" +msgstr[1] "Rimuovi tipi matadato dai documenti" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "Rimosso con successo il tipo metadato \"%(metadata_type)s\" dal documento: %(document)s." -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "Errore rimuovendo il tipo metadato \"%(metadata_type)s\" dal documento: %(document)s; %(exception)s" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "Rimuovi tipi matadato dal documento" -msgstr[1] "Rimuovi tipi matadato dai documenti" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "Metadati per il documento: %s" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "Crea tipo metadato" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "Cancellare il tipo metadato: %s?" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "Modifica il tipo metadato: %s" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "Nome interno" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "Tipo metadato disponibili" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "Tipi metadato assegnati" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "Tipi metadati opzionali per il tipo documento: %s" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "Tipi metadati obbligatori per il tipo documento: %s" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/nl_NL/LC_MESSAGES/django.mo index 89be2431e2..cb0d44e9cc 100644 Binary files a/mayan/apps/metadata/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/nl_NL/LC_MESSAGES/django.po index f64596bedd..c5843458f7 100644 --- a/mayan/apps/metadata/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/nl_NL/LC_MESSAGES/django.po @@ -5,13 +5,14 @@ # Translators: # Translators: # Evelijn Saaltink , 2016 +# Johan Braeken, 2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-11-09 16:41+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Johan Braeken\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,53 +20,54 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Metadata" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "Documenten missen vereiste metadata" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" -msgstr "" +msgstr "Documenten met ontbrekende optionele metadata" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "Metadata soortnaam" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "Metadata typenaam" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "Waarde van een metadata" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Waarde" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "Verplicht" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Metadata type" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Metadata waarde" @@ -101,12 +103,16 @@ msgstr "Standaard waardefout: %s" msgid "\"%s\" is required for this document type." msgstr "\"%s\" is vereist voor deze documentsoort." -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Verwijder" @@ -138,11 +144,11 @@ msgstr "Maak nieuwe aan" msgid "Delete" msgstr "Verwijder" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "bewerken" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "Metadatasoorten" @@ -198,39 +204,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "Document" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "Type" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" -msgstr "" +msgstr "Document metadata" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Documentsoort" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -240,15 +246,15 @@ msgstr "" #: permissions.py:12 msgid "Add metadata to a document" -msgstr "" +msgstr "Voeg metadata toe aan een document" #: permissions.py:15 msgid "Remove metadata from a document" -msgstr "" +msgstr "Verwijder metadata van een document" #: permissions.py:18 msgid "View metadata from a document" -msgstr "" +msgstr "Bekijk metadata van een document" #: permissions.py:21 msgid "Metadata setup" @@ -260,147 +266,189 @@ msgstr "" #: permissions.py:26 msgid "Create new metadata types" -msgstr "" +msgstr "Voeg een nieuw metadatatype toe" #: permissions.py:29 msgid "Delete metadata types" -msgstr "" +msgstr "Verwijder metadatatypes" #: permissions.py:32 msgid "View metadata types" -msgstr "" +msgstr "Bekijk metadatatypes" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "U dient minstens 1 document aan te geven." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." +#: views.py:43 +#, python-format +msgid "Metadata add request performed on %(count)d documents" msgstr "" -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" + +#: views.py:95 +msgid "Add" +msgstr "Voeg toe" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" msgstr[0] "" msgstr[1] "" -#: views.py:139 +#: views.py:108 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgid "Add metadata types to document: %s" msgstr "" -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "" - -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "" -msgstr[1] "" - -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "" - -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "" -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "" -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" + +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" msgstr[0] "" msgstr[1] "" -#: views.py:429 +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "" -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "" -msgstr[1] "" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/pl/LC_MESSAGES/django.mo index 674ae93261..04e31087eb 100644 Binary files a/mayan/apps/metadata/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/pl/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/pl/LC_MESSAGES/django.po index cc9d5d1219..c73a0c83fc 100644 --- a/mayan/apps/metadata/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/pl/LC_MESSAGES/django.po @@ -12,63 +12,64 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Metadane" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "Dokumenty, w których brak jest wymaganych metadanych" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "Dokumenty, w których brak jest opcjonalnych metadanych" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "Queryset zawierający referencję do instancji MetadataType i wartość dla tego typu metadanych" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "Nazwa typu metadanych" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "Wartość typu metadanych" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "Wartość metadanych" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Wartość" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "Wymagane" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Typ metadanych" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Wartość metadanych" @@ -104,12 +105,16 @@ msgstr "Błąd dotyczący domyślnej wartości: %s" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "Dostępne zmienne kontekstowe szablonu:" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Usuń" @@ -141,11 +146,11 @@ msgstr "Utwórz nowy" msgid "Delete" msgstr "Usuń" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "Edytuj" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "Typy metadanych" @@ -201,39 +206,39 @@ msgstr "Parser zmieni format podanej wartości na format oczekiwany." msgid "Parser" msgstr "Parser" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "Wartość nie jest jedną z dostępnych opcji." -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "Dokument" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "Typ" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "Typ metadanych jest wymagany dla tego typu dokumentu." -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "Typ metadanej jest niewłaściwy dla tego typu dokumentu." -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "Metadane dokumentów" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Typ dokumentu" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "Opcje typu metadanych dla typu dokumentów" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "Opcje typów metadanych dla typu dokumentów" @@ -273,141 +278,187 @@ msgstr "Usuń typy metadanych" msgid "View metadata types" msgstr "Przeglądaj typy metadanych" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." -msgstr "" - -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Musisz dodać co najmniej jeden dokument." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." -msgstr "" - -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "Wybrany dokument nie ma żadnych metadanych." -msgstr[1] "Wybrane dokumenty nie mają żadnych metadanych." -msgstr[2] "Wybrane dokumenty nie mają żadnych metadanych." - -#: views.py:139 +#: views.py:41 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." -msgstr "Błąd podczas edycji metadanych dla dokumentu: %(document)s; %(exception)s." +msgid "Metadata add request performed on %(count)d document" +msgstr "" -#: views.py:150 +#: views.py:43 #, python-format -msgid "Metadata for document %s edited successfully." -msgstr "Metadane dla dokumentu %s zostały pomyślnie zmodyfikowane." +msgid "Metadata add request performed on %(count)d documents" +msgstr "" -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" + +#: views.py:95 +msgid "Add" +msgstr "Dodaj" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" -#: views.py:256 +#: views.py:108 #, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" +msgid "Add metadata types to document: %s" msgstr "" -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "" -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "" -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" + +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" -#: views.py:429 +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "Błąd podczas edycji metadanych dla dokumentu: %(document)s; %(exception)s." + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "Metadane dla dokumentu %s zostały pomyślnie zmodyfikowane." + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "Metadane dokumentu: %s" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "" -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "Metadane dokumentu: %s" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" +#~ msgstr[2] "bae23547be942683f3c566589b362141_pl_2" +#~ msgstr[3] "bae23547be942683f3c566589b362141_pl_3" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" @@ -446,18 +497,21 @@ msgstr "" #~ msgstr[0] "4e0a5b1bfd2fec1712bbea096f0291ce_pl_0" #~ msgstr[1] "4e0a5b1bfd2fec1712bbea096f0291ce_pl_1" #~ msgstr[2] "4e0a5b1bfd2fec1712bbea096f0291ce_pl_2" +#~ msgstr[3] "4e0a5b1bfd2fec1712bbea096f0291ce_pl_3" #~ msgid "Add metadata types to document: %(document)s" #~ msgid_plural "Add metadata types to the %(count)d selected documents" #~ msgstr[0] "9ef9d143943c2d5ff2b9abfe3b7ccb10_pl_0" #~ msgstr[1] "9ef9d143943c2d5ff2b9abfe3b7ccb10_pl_1" #~ msgstr[2] "9ef9d143943c2d5ff2b9abfe3b7ccb10_pl_2" +#~ msgstr[3] "9ef9d143943c2d5ff2b9abfe3b7ccb10_pl_3" #~ msgid "Remove metadata types from document: %(document)s" #~ msgid_plural "Remove metadata types from the %(count)d selected documents" #~ msgstr[0] "6ecb682bfaa127b9e56a8036a602ccf4_pl_0" #~ msgstr[1] "6ecb682bfaa127b9e56a8036a602ccf4_pl_1" #~ msgstr[2] "6ecb682bfaa127b9e56a8036a602ccf4_pl_2" +#~ msgstr[3] "6ecb682bfaa127b9e56a8036a602ccf4_pl_3" #~ msgid "Metadata for: %s" #~ msgstr "metadata for: %s" diff --git a/mayan/apps/metadata/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/pt/LC_MESSAGES/django.mo index 203a0a0fb1..9dcb3612c0 100644 Binary files a/mayan/apps/metadata/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/pt/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/pt/LC_MESSAGES/django.po index fd1c9fc7f3..53e6984954 100644 --- a/mayan/apps/metadata/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/pt/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -21,53 +21,54 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Metadados" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Valor" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Tipo de metadados" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Valor de metadados" @@ -103,12 +104,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Remover" @@ -140,11 +145,11 @@ msgstr "" msgid "Delete" msgstr "Eliminar" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "Editar" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "Tipos de metadados" @@ -200,39 +205,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Tipo de documento" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -272,137 +277,179 @@ msgstr "Excluir tipos de metadados" msgid "View metadata types" msgstr "Ver tipos de metadados" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Deve fornecer pelo menos um documento." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." +#: views.py:43 +#, python-format +msgid "Metadata add request performed on %(count)d documents" msgstr "" -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" + +#: views.py:95 +msgid "Add" +msgstr "Adicionar" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" msgstr[0] "" msgstr[1] "" -#: views.py:139 +#: views.py:108 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgid "Add metadata types to document: %s" msgstr "" -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "Metadados do documento %s alterados com sucesso." - -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "" -msgstr[1] "" - -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "" - -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "Tipo de metadados: %(metadata_type)s adicionado com sucesso ao documento %(document)s." -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "Tipo de metadados: %(metadata_type)s já existe no documento %(document)s ." -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" + +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" msgstr[0] "" msgstr[1] "" -#: views.py:429 +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "Editar os metadados do documento: %s" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "Metadados do documento %s alterados com sucesso." + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "" -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "" -msgstr[1] "" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/pt_BR/LC_MESSAGES/django.mo index 5d8c3cf9ab..01d2c36d04 100644 Binary files a/mayan/apps/metadata/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/pt_BR/LC_MESSAGES/django.po index af31537046..9782bf8e69 100644 --- a/mayan/apps/metadata/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/pt_BR/LC_MESSAGES/django.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-11-17 23:07+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,53 +22,54 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Metadados" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "Documentos em falta metadados necessários" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "Documentos sem metadados opcionais" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "Contendo queryset para MetadataType, referência de instância e um valor para esse tipo de metadados" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "Metadados nome do tipo" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "Metadados valor do tipo" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "Valor do metadata" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "Devolver o valor de um documento específico de metadados" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Valor" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "exigido" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Tipo de metadados" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Valor de metadados" @@ -104,12 +105,16 @@ msgstr "Erro de valor padrão: %s" msgid "\"%s\" is required for this document type." msgstr "\"%s\" é necessário para este tipo de documento." -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "Variáveis de contexto do modelo disponíveis:" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Remover" @@ -141,11 +146,11 @@ msgstr "Criar novo" msgid "Delete" msgstr "Excluir" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "Editar" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "Tipos de metadados" @@ -201,39 +206,39 @@ msgstr "O analisador irá reformatar o valor inserido para estar em conformidade msgid "Parser" msgstr "Analisador" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "O valor não é uma das opções fornecidas." -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "Documentos" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "Tipo" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "Faltando metadados necessários" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "Tipo de Metadados é necessário para o tipo de documento" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "Documento Metadado" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Tipo de Documento" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "Tipo de Documento - Opções de tipo de metadados" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "Tipo de Documento - Opções de tipo de metadado" @@ -273,137 +278,179 @@ msgstr "Excluir tipos de metadados" msgid "View metadata types" msgstr "Ver tipos de metadados" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "Chave primária do tipo de metadados a ser adicionado." -#: serializers.py:40 -msgid "Primary key of the document metadata type." -msgstr "Chave primária do tipo de metadados a ser adicionado." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." +msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." -msgstr "Valor da instância tipo de metadados correspondente." - -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Deve fornecer pelo menos um documento." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." -msgstr "Apenas selecionar documentos do mesmo tipo." - -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "O documento selecionado não possui metadados." -msgstr[1] "Os documentos selecionados não possuem metadados." - -#: views.py:139 +#: views.py:41 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." -msgstr "Erro editando metadados para o documento: %(document)s; %(exception)s." +msgid "Metadata add request performed on %(count)d document" +msgstr "" -#: views.py:150 +#: views.py:43 #, python-format -msgid "Metadata for document %s edited successfully." -msgstr "Metadados para o documento %s alterados com sucesso." +msgid "Metadata add request performed on %(count)d documents" +msgstr "" -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "Editar metadado do documento" -msgstr[1] "Editar metadados dos documentos" +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" -#: views.py:256 +#: views.py:95 +msgid "Add" +msgstr "Adicionar" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" +msgstr[0] "Adicionar tipos de metadados para o documento" +msgstr[1] "Adicionar tipos de metadados para os documentos" + +#: views.py:108 #, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "Erro ao adicionar metadados de tipo \"%(metadata_type)s\" para o documento: %(document)s; %(exception)s" +msgid "Add metadata types to document: %s" +msgstr "" -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "Tipo Metadado %(metadata_type)s adicionado com sucesso para o documento %(document)s." -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "Tipo Metadado: %(metadata_type)s já está presente no documento%(document)s." -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" -msgstr[0] "Adicionar tipos de metadados para o documento" -msgstr[1] "Adicionar tipos de metadados para os documentos" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" -#: views.py:429 +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" +msgstr[0] "Editar metadado do documento" +msgstr[1] "Editar metadados dos documentos" + +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "Editar os metadados do documento: %s" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "Erro editando metadados para o documento: %(document)s; %(exception)s." + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "Metadados para o documento %s alterados com sucesso." + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "Metadados para documento: %s" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "Remover tipos de metadados do documento" +msgstr[1] "Remover tipos de metadados dos documentos" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "Removido com sucesso o Stipo de metadato \"%(metadata_type)s\" do documento: %(document)s." -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "Erro para remover o tipo de metadado \"%(metadata_type)s\" do documento: %(document)s; %(exception)s" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "Remover tipos de metadados do documento" -msgstr[1] "Remover tipos de metadados dos documentos" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "Metadados para documento: %s" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "Criar Tipo de documento" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "Apagar o tipo de metadados: %s?" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "Editar o tipo de documento: %s" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "nome interno" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "Tipos de metadados disponíveis" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "Tipos de metadados atribuídos" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "Tipo de metadado opicional para os tipos de documentos : %s" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "Tipos de metadados requeridos para documento do tipo: %s" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/ro_RO/LC_MESSAGES/django.mo index 78f128bfdf..07bf1e0ec4 100644 Binary files a/mayan/apps/metadata/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/ro_RO/LC_MESSAGES/django.po index 89d368ad7c..dc4b7eebac 100644 --- a/mayan/apps/metadata/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/ro_RO/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -19,53 +19,54 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Metadate" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Valoare" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Metadate de tip" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Valoare metadate " @@ -101,12 +102,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Scoate" @@ -138,11 +143,11 @@ msgstr "" msgid "Delete" msgstr "Șterge" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "Editează" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "Metadate tipuri de" @@ -198,39 +203,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "Tip" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Tip document" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -270,141 +275,183 @@ msgstr "Ștergeți tipuri de metadate" msgid "View metadata types" msgstr "Vezi tipuri de metadate" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Trebuie să furnizeze cel puțin un document." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." +#: views.py:43 +#, python-format +msgid "Metadata add request performed on %(count)d documents" msgstr "" -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -#: views.py:139 -#, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." msgstr "" -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "Metadate pentru documentul %s editat cu succes." +#: views.py:95 +msgid "Add" +msgstr "Adaugă" -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "" - -#: views.py:272 -#, python-format -msgid "" -"Metadata type: %(metadata_type)s successfully added to document " -"%(document)s." -msgstr "Tipul de metadate:%(metadata_type)s au fost adăugate cu succes documentul %(document)s." - -#: views.py:282 -#, python-format -msgid "" -"Metadata type: %(metadata_type)s already present in document %(document)s." -msgstr "Tipul de metadate:%(metadata_type)s e deja prezent în documentul %(document)s." - -#: views.py:313 +#: views.py:97 msgid "Add metadata types to document" msgid_plural "Add metadata types to documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:429 +#: views.py:108 +#, python-format +msgid "Add metadata types to document: %s" +msgstr "" + +#: views.py:152 #, python-format msgid "" -"Successfully remove metadata type \"%(metadata_type)s\" from document: " +"Metadata type: %(metadata_type)s successfully added to document " "%(document)s." -msgstr "" +msgstr "Tipul de metadate:%(metadata_type)s au fost adăugate cu succes documentul %(document)s." -#: views.py:439 +#: views.py:162 #, python-format msgid "" -"Error removing metadata type \"%(metadata_type)s\" from document: " -"%(document)s; %(exception)s" +"Metadata type: %(metadata_type)s already present in document %(document)s." +msgstr "Tipul de metadate:%(metadata_type)s e deja prezent în documentul %(document)s." + +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" msgstr "" -#: views.py:461 +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "Editați metadate pentru document:% s" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "Metadate pentru documentul %s editat cu succes." + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 msgid "Remove metadata types from the document" msgid_plural "Remove metadata types from the documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:504 +#: views.py:408 #, python-format -msgid "Metadata for document: %s" +msgid "Remove metadata types from the document: %s" msgstr "" -#: views.py:513 +#: views.py:455 +#, python-format +msgid "" +"Successfully remove metadata type \"%(metadata_type)s\" from document: " +"%(document)s." +msgstr "" + +#: views.py:465 +#, python-format +msgid "" +"Error removing metadata type \"%(metadata_type)s\" from document: " +"%(document)s; %(exception)s" +msgstr "" + +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" +#~ msgstr[2] "bae23547be942683f3c566589b362141_pl_2" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/ru/LC_MESSAGES/django.mo index 348cd83c88..41ef1f9972 100644 Binary files a/mayan/apps/metadata/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/ru/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/ru/LC_MESSAGES/django.po index 4b031aa240..c29e81774f 100644 --- a/mayan/apps/metadata/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/ru/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-11-02 04:15+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" @@ -19,53 +19,54 @@ msgstr "" "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" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Метаданные" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Значение" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "Требуется" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Тип метаданных" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Значение метаданных" @@ -101,12 +102,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Удалить" @@ -138,11 +143,11 @@ msgstr "Создать новые" msgid "Delete" msgstr "Удалить" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "Редактировать" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "Типы метаданных" @@ -198,39 +203,39 @@ msgstr "Введённое значение будет переформатир msgid "Parser" msgstr "Парсер" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "Документ" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "Тип" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "Метаданные документа" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Тип документа" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -270,73 +275,33 @@ msgstr "Удаление типов метаданных" msgid "View metadata types" msgstr "Просмотр типов метаданных" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "Первичный ключ добавляемого типа метаданных." -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Необходимо предоставить хотя бы один документ." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." -msgstr "Выберите документы одного типа." - -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "Выбранный документ не имеет никаких метаданных." -msgstr[1] "Выбранные документы не имеют никаких метаданных." -msgstr[2] "Выбранные документы не имеют никаких метаданных." -msgstr[3] "Выбранные документы не имеют никаких метаданных." - -#: views.py:139 +#: views.py:43 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." -msgstr "Ошибка при редактировании метаданных документа: %(document)s; %(exception)s." +msgid "Metadata add request performed on %(count)d documents" +msgstr "" -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "Метаданные для документов %s изменены." +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "Редактировать метаданные документа." -msgstr[1] "Редактировать метаданные документов." -msgstr[2] "Редактировать метаданные документов." -msgstr[3] "Редактировать метаданные документов." +#: views.py:95 +msgid "Add" +msgstr "Добавить" -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "Ошибка добавления метаданных типа %(metadata_type)s к документу: %(document)s; %(exception)s" - -#: views.py:272 -#, python-format -msgid "" -"Metadata type: %(metadata_type)s successfully added to document " -"%(document)s." -msgstr "Тип метаданных: %(metadata_type)s успешно добавлены к документу %(document)s." - -#: views.py:282 -#, python-format -msgid "" -"Metadata type: %(metadata_type)s already present in document %(document)s." -msgstr "Тип метаданных: %(metadata_type)s уже есть в документе %(document)s." - -#: views.py:313 +#: views.py:97 msgid "Add metadata types to document" msgid_plural "Add metadata types to documents" msgstr[0] "Добавить тип метаданных к документам" @@ -344,21 +309,73 @@ msgstr[1] "Добавить типы метаданных к документа msgstr[2] "Добавить типы метаданных к документам" msgstr[3] "Добавить типы метаданных к документам" -#: views.py:429 +#: views.py:108 +#, python-format +msgid "Add metadata types to document: %s" +msgstr "" + +#: views.py:152 #, python-format msgid "" -"Successfully remove metadata type \"%(metadata_type)s\" from document: " +"Metadata type: %(metadata_type)s successfully added to document " "%(document)s." -msgstr "Успешно удалён тип метаданных \"%(metadata_type)s\" из документа %(document)s." +msgstr "Тип метаданных: %(metadata_type)s успешно добавлены к документу %(document)s." -#: views.py:439 +#: views.py:162 #, python-format msgid "" -"Error removing metadata type \"%(metadata_type)s\" from document: " -"%(document)s; %(exception)s" -msgstr "Ошибка удаления метаданных типа \"%(metadata_type)s\" от документа: %(document)s; %(exception)s" +"Metadata type: %(metadata_type)s already present in document %(document)s." +msgstr "Тип метаданных: %(metadata_type)s уже есть в документе %(document)s." -#: views.py:461 +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" + +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" +msgstr[0] "Редактировать метаданные документа." +msgstr[1] "Редактировать метаданные документов." +msgstr[2] "Редактировать метаданные документов." +msgstr[3] "Редактировать метаданные документов." + +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "Редактировать метаданные документа:%s." + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "Ошибка при редактировании метаданных документа: %(document)s; %(exception)s." + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "Метаданные для документов %s изменены." + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "Метаданные документа: %s" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 msgid "Remove metadata types from the document" msgid_plural "Remove metadata types from the documents" msgstr[0] "Удалить тип метаданных из документов" @@ -366,49 +383,79 @@ msgstr[1] "Удалить типы метаданных из документо msgstr[2] "Удалить типы метаданных из документов" msgstr[3] "Удалить типы метаданных из документов" -#: views.py:504 +#: views.py:408 #, python-format -msgid "Metadata for document: %s" -msgstr "Метаданные документа: %s" +msgid "Remove metadata types from the document: %s" +msgstr "" -#: views.py:513 +#: views.py:455 +#, python-format +msgid "" +"Successfully remove metadata type \"%(metadata_type)s\" from document: " +"%(document)s." +msgstr "Успешно удалён тип метаданных \"%(metadata_type)s\" из документа %(document)s." + +#: views.py:465 +#, python-format +msgid "" +"Error removing metadata type \"%(metadata_type)s\" from document: " +"%(document)s; %(exception)s" +msgstr "Ошибка удаления метаданных типа \"%(metadata_type)s\" от документа: %(document)s; %(exception)s" + +#: views.py:476 msgid "Create metadata type" msgstr "Создать тип метаданных" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "Удалить тип метаданных: %s?" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "Редактировать тип метаданных: %s" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "Внутреннее имя" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "Доступные типы метаданных" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "Назначенные типы метаданных" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "Дополнительные типы метаданных для типов документов: %s" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "Обязательные типы метаданных для типов документов: %s" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" +#~ msgstr[2] "bae23547be942683f3c566589b362141_pl_2" +#~ msgstr[3] "bae23547be942683f3c566589b362141_pl_3" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/sl_SI/LC_MESSAGES/django.mo index 5f7cd966a9..0d856fc2f1 100644 Binary files a/mayan/apps/metadata/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/sl_SI/LC_MESSAGES/django.po index 5cffd068be..41fc5dbfc3 100644 --- a/mayan/apps/metadata/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-11-17 08:59+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-23 16:43+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,53 +18,54 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Tip metapodatkov" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Vrednost metapodatkov" @@ -100,12 +101,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "" @@ -137,11 +142,11 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "" @@ -197,39 +202,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" -msgstr "" +msgstr "Dokument" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Tip dokumenta" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -269,73 +274,33 @@ msgstr "" msgid "View metadata types" msgstr "" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." -msgstr "" - -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Potrebno je podati vsaj en dokument" - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." -msgstr "" - -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -#: views.py:139 +#: views.py:41 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:150 +#: views.py:43 #, python-format -msgid "Metadata for document %s edited successfully." +msgid "Metadata add request performed on %(count)d documents" msgstr "" -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." msgstr "" -#: views.py:272 -#, python-format -msgid "" -"Metadata type: %(metadata_type)s successfully added to document " -"%(document)s." +#: views.py:95 +msgid "Add" msgstr "" -#: views.py:282 -#, python-format -msgid "" -"Metadata type: %(metadata_type)s already present in document %(document)s." -msgstr "" - -#: views.py:313 +#: views.py:97 msgid "Add metadata types to document" msgid_plural "Add metadata types to documents" msgstr[0] "" @@ -343,21 +308,73 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: views.py:429 +#: views.py:108 +#, python-format +msgid "Add metadata types to document: %s" +msgstr "" + +#: views.py:152 #, python-format msgid "" -"Successfully remove metadata type \"%(metadata_type)s\" from document: " +"Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "" -#: views.py:439 +#: views.py:162 #, python-format msgid "" -"Error removing metadata type \"%(metadata_type)s\" from document: " -"%(document)s; %(exception)s" +"Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "" -#: views.py:461 +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" + +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 msgid "Remove metadata types from the document" msgid_plural "Remove metadata types from the documents" msgstr[0] "" @@ -365,49 +382,79 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: views.py:504 +#: views.py:408 #, python-format -msgid "Metadata for document: %s" +msgid "Remove metadata types from the document: %s" msgstr "" -#: views.py:513 +#: views.py:455 +#, python-format +msgid "" +"Successfully remove metadata type \"%(metadata_type)s\" from document: " +"%(document)s." +msgstr "" + +#: views.py:465 +#, python-format +msgid "" +"Error removing metadata type \"%(metadata_type)s\" from document: " +"%(document)s; %(exception)s" +msgstr "" + +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" +#~ msgstr[1] "bae23547be942683f3c566589b362141_pl_1" +#~ msgstr[2] "bae23547be942683f3c566589b362141_pl_2" +#~ msgstr[3] "bae23547be942683f3c566589b362141_pl_3" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/vi_VN/LC_MESSAGES/django.mo index e993492b2c..f7ad7a8a00 100644 Binary files a/mayan/apps/metadata/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/vi_VN/LC_MESSAGES/django.po index cb8bfc085e..3af8287a31 100644 --- a/mayan/apps/metadata/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/vi_VN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -19,53 +19,54 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "Siêu dữ liệu" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "Giá trị" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "Loại siêu dữ liệu" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "" @@ -101,12 +102,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "Xóa" @@ -138,11 +143,11 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "Sửa" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "" @@ -198,39 +203,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "Kiểu tài liệu" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -270,133 +275,175 @@ msgstr "Xóa loại siêu dữ liệu" msgid "View metadata types" msgstr "Xem các loại siêu dữ liệu" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "Cần cung cấp ít nhất một tài liệu." - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." +#: views.py:43 +#, python-format +msgid "Metadata add request performed on %(count)d documents" msgstr "" -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" + +#: views.py:95 +msgid "Add" +msgstr "Thêm" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" msgstr[0] "" -#: views.py:139 +#: views.py:108 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgid "Add metadata types to document: %s" msgstr "" -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "" - -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "" - -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "" - -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "" -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "" -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" + +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" msgstr[0] "" -#: views.py:429 +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "" -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/metadata/locale/zh_CN/LC_MESSAGES/django.mo index ba9e5196dd..5f56367359 100644 Binary files a/mayan/apps/metadata/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/metadata/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/metadata/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/metadata/locale/zh_CN/LC_MESSAGES/django.po index 9fbb6e817a..fc0087d383 100644 --- a/mayan/apps/metadata/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/metadata/locale/zh_CN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" -"PO-Revision-Date: 2016-10-28 07:35+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -19,53 +19,54 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:52 apps.py:142 links.py:39 permissions.py:7 settings.py:10 +#: apps.py:52 apps.py:145 apps.py:150 links.py:39 permissions.py:7 +#: settings.py:10 msgid "Metadata" msgstr "元数据" -#: apps.py:76 +#: apps.py:79 msgid "Documents missing required metadata" msgstr "" -#: apps.py:93 +#: apps.py:96 msgid "Documents missing optional metadata" msgstr "" -#: apps.py:112 +#: apps.py:115 msgid "" "Queryset containing a MetadataType instance reference and a value for that " "metadata type" msgstr "" -#: apps.py:118 +#: apps.py:121 msgid "Metadata type name" msgstr "" -#: apps.py:121 +#: apps.py:124 msgid "Metadata type value" msgstr "" -#: apps.py:125 +#: apps.py:128 msgid "Value of a metadata" msgstr "" -#: apps.py:127 +#: apps.py:130 msgid "Return the value of a specific document metadata" msgstr "" -#: apps.py:147 forms.py:19 models.py:158 +#: apps.py:157 forms.py:19 models.py:159 msgid "Value" msgstr "值" -#: apps.py:151 forms.py:39 models.py:208 +#: apps.py:161 forms.py:39 models.py:209 msgid "Required" msgstr "" -#: apps.py:173 forms.py:112 models.py:91 models.py:206 +#: apps.py:183 apps.py:191 forms.py:113 models.py:91 models.py:207 msgid "Metadata type" msgstr "元数据类型" -#: apps.py:176 +#: apps.py:186 apps.py:195 msgid "Metadata value" msgstr "Metadata值" @@ -101,12 +102,16 @@ msgstr "" msgid "\"%s\" is required for this document type." msgstr "" -#: forms.py:130 +#: forms.py:112 +msgid "Metadata types to be added to the selected documents." +msgstr "" + +#: forms.py:141 #| msgid " Available models: %s" msgid " Available template context variables: " msgstr "" -#: forms.py:141 +#: forms.py:152 views.py:395 msgid "Remove" msgstr "移除" @@ -138,11 +143,11 @@ msgstr "" msgid "Delete" msgstr "" -#: links.py:59 +#: links.py:59 views.py:229 msgid "Edit" msgstr "" -#: links.py:64 models.py:92 views.py:561 +#: links.py:64 models.py:92 views.py:524 msgid "Metadata types" msgstr "元数据类型" @@ -198,39 +203,39 @@ msgstr "" msgid "Parser" msgstr "" -#: models.py:131 +#: models.py:132 msgid "Value is not one of the provided options." msgstr "" -#: models.py:153 +#: models.py:154 msgid "Document" msgstr "" -#: models.py:155 +#: models.py:156 msgid "Type" msgstr "" -#: models.py:167 +#: models.py:168 msgid "Metadata type is required for this document type." msgstr "" -#: models.py:175 +#: models.py:176 msgid "Metadata type is not valid for this document type." msgstr "" -#: models.py:189 models.py:190 +#: models.py:190 models.py:191 msgid "Document metadata" msgstr "" -#: models.py:203 +#: models.py:204 msgid "Document type" msgstr "文档类型" -#: models.py:215 +#: models.py:216 msgid "Document type metadata type options" msgstr "" -#: models.py:216 +#: models.py:217 msgid "Document type metadata types options" msgstr "" @@ -270,133 +275,175 @@ msgstr "删除元数据类型" msgid "View metadata types" msgstr "查看元数据类型" -#: serializers.py:33 serializers.py:61 +#: serializers.py:49 msgid "Primary key of the metadata type to be added." msgstr "" -#: serializers.py:40 -msgid "Primary key of the document metadata type." +#: serializers.py:130 +msgid "Primary key of the metadata type to be added to the document." msgstr "" -#: serializers.py:46 -msgid "Value of the corresponding metadata type instance." +#: views.py:41 +#, python-format +msgid "Metadata add request performed on %(count)d document" msgstr "" -#: views.py:58 views.py:217 views.py:353 -msgid "Must provide at least one document." -msgstr "必须至少提供一个文档" - -#: views.py:66 views.py:196 views.py:361 -msgid "Only select documents of the same type." +#: views.py:43 +#, python-format +msgid "Metadata add request performed on %(count)d documents" msgstr "" -#: views.py:75 views.py:370 -msgid "The selected document doesn't have any metadata." -msgid_plural "The selected documents don't have any metadata." +#: views.py:56 views.py:192 views.py:358 +msgid "Selected documents must be of the same type." +msgstr "" + +#: views.py:95 +msgid "Add" +msgstr "新增" + +#: views.py:97 +msgid "Add metadata types to document" +msgid_plural "Add metadata types to documents" msgstr[0] "" -#: views.py:139 +#: views.py:108 #, python-format -msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgid "Add metadata types to document: %s" msgstr "" -#: views.py:150 -#, python-format -msgid "Metadata for document %s edited successfully." -msgstr "文档 %s 的元数据编辑成功。" - -#: views.py:168 -msgid "Edit document metadata" -msgid_plural "Edit documents metadata" -msgstr[0] "" - -#: views.py:256 -#, python-format -msgid "" -"Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " -"%(exception)s" -msgstr "" - -#: views.py:272 +#: views.py:152 #, python-format msgid "" "Metadata type: %(metadata_type)s successfully added to document " "%(document)s." msgstr "元数据类型: %(metadata_type)s成功加入到文档%(document)s" -#: views.py:282 +#: views.py:162 #, python-format msgid "" "Metadata type: %(metadata_type)s already present in document %(document)s." msgstr "元数据类型: %(metadata_type)s 已经存在于文档%(document)s." -#: views.py:313 -msgid "Add metadata types to document" -msgid_plural "Add metadata types to documents" +#: views.py:176 +#, python-format +msgid "Metadata edit request performed on %(count)d document" +msgstr "" + +#: views.py:179 +#, python-format +msgid "Metadata edit request performed on %(count)d documents" +msgstr "" + +#: views.py:231 +msgid "Edit document metadata" +msgid_plural "Edit documents metadata" msgstr[0] "" -#: views.py:429 +#: views.py:242 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "编辑文档 %s 元数据" + +#: views.py:295 +#, python-format +msgid "Error editing metadata for document: %(document)s; %(exception)s." +msgstr "" + +#: views.py:306 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "文档 %s 的元数据编辑成功。" + +#: views.py:330 +#, python-format +msgid "Metadata for document: %s" +msgstr "" + +#: views.py:342 +#, python-format +msgid "Metadata remove request performed on %(count)d document" +msgstr "" + +#: views.py:345 +#, python-format +msgid "Metadata remove request performed on %(count)d documents" +msgstr "" + +#: views.py:397 +msgid "Remove metadata types from the document" +msgid_plural "Remove metadata types from the documents" +msgstr[0] "" + +#: views.py:408 +#, python-format +msgid "Remove metadata types from the document: %s" +msgstr "" + +#: views.py:455 #, python-format msgid "" "Successfully remove metadata type \"%(metadata_type)s\" from document: " "%(document)s." msgstr "" -#: views.py:439 +#: views.py:465 #, python-format msgid "" "Error removing metadata type \"%(metadata_type)s\" from document: " "%(document)s; %(exception)s" msgstr "" -#: views.py:461 -msgid "Remove metadata types from the document" -msgid_plural "Remove metadata types from the documents" -msgstr[0] "" - -#: views.py:504 -#, python-format -msgid "Metadata for document: %s" -msgstr "" - -#: views.py:513 +#: views.py:476 msgid "Create metadata type" msgstr "" -#: views.py:529 +#: views.py:492 #, python-format #| msgid "Delete metadata types" msgid "Delete the metadata type: %s?" msgstr "" -#: views.py:542 +#: views.py:505 #, python-format msgid "Edit metadata type: %s" msgstr "" -#: views.py:556 +#: views.py:519 msgid "Internal name" msgstr "" -#: views.py:568 +#: views.py:531 #| msgid "View metadata types" msgid "Available metadata types" msgstr "" -#: views.py:569 +#: views.py:532 msgid "Metadata types assigned" msgstr "" -#: views.py:600 +#: views.py:563 #, python-format msgid "Optional metadata types for document type: %s" msgstr "" -#: views.py:618 +#: views.py:581 #, python-format msgid "Required metadata types for document type: %s" msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "The selected document doesn't have any metadata." +#~ msgid_plural "The selected documents don't have any metadata." +#~ msgstr[0] "bae23547be942683f3c566589b362141_pl_0" + +#~ msgid "" +#~ "Error adding metadata type \"%(metadata_type)s\" to document: %(document)s; " +#~ "%(exception)s" +#~ msgstr "" +#~ "Error removing metadata type: %(metadata_type)s from document: %(document)s." + #~ msgid "Missing metadata" #~ msgstr "edit metadata" diff --git a/mayan/apps/metadata/serializers.py b/mayan/apps/metadata/serializers.py index 12b70a50c7..0afcf95540 100644 --- a/mayan/apps/metadata/serializers.py +++ b/mayan/apps/metadata/serializers.py @@ -1,64 +1,159 @@ from __future__ import unicode_literals +from django.core.exceptions import ValidationError as DjangoValidationError from django.utils.translation import ugettext_lazy as _ from rest_framework import serializers +from rest_framework.exceptions import ValidationError +from rest_framework.reverse import reverse -from .models import DocumentMetadata, MetadataType, DocumentTypeMetadataType +from documents.serializers import DocumentSerializer, DocumentTypeSerializer + +from .models import DocumentMetadata, DocumentTypeMetadataType, MetadataType -class MetadataTypeSerializer(serializers.ModelSerializer): +class MetadataTypeSerializer(serializers.HyperlinkedModelSerializer): class Meta: + extra_kwargs = { + 'url': { + 'lookup_field': 'pk', 'lookup_url_kwarg': 'metadata_type_pk', + 'view_name': 'rest_api:metadatatype-detail' + }, + } fields = ( - 'id', 'name', 'label', 'default', 'lookup', 'parser', 'validation' + 'default', 'id', 'label', 'lookup', 'name', 'parser', 'url', + 'validation' ) model = MetadataType -class DocumentMetadataSerializer(serializers.ModelSerializer): - document = serializers.PrimaryKeyRelatedField(read_only=True) +class DocumentTypeMetadataTypeSerializer(serializers.HyperlinkedModelSerializer): + document_type = DocumentTypeSerializer(read_only=True) + metadata_type = MetadataTypeSerializer(read_only=True) + url = serializers.SerializerMethodField() class Meta: - fields = ('document', 'id', 'metadata_type', 'value',) - model = DocumentMetadata - read_only_fields = ('metadata_type',) - - -class DocumentTypeMetadataTypeSerializer(serializers.ModelSerializer): - class Meta: - fields = ('metadata_type', ) + fields = ('document_type', 'id', 'metadata_type', 'required', 'url') model = DocumentTypeMetadataType + def get_url(self, instance): + return reverse( + 'rest_api:documenttypemetadatatype-detail', args=( + instance.document_type.pk, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) -class DocumentNewMetadataSerializer(serializers.Serializer): + +class NewDocumentTypeMetadataTypeSerializer(serializers.ModelSerializer): metadata_type_pk = serializers.IntegerField( help_text=_('Primary key of the metadata type to be added.'), write_only=True ) + url = serializers.SerializerMethodField() + class Meta: + fields = ( + 'id', 'metadata_type_pk', 'required', 'url' + ) + model = DocumentTypeMetadataType + + def get_url(self, instance): + return reverse( + 'rest_api:documenttypemetadatatype-detail', args=( + instance.document_type.pk, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + + def validate(self, attrs): + attrs['document_type'] = self.context['document_type'] + attrs['metadata_type'] = MetadataType.objects.get( + pk=attrs.pop('metadata_type_pk') + ) + + instance = DocumentTypeMetadataType(**attrs) + try: + instance.full_clean() + except DjangoValidationError as exception: + raise ValidationError(exception) + + return attrs + + +class WritableDocumentTypeMetadataTypeSerializer(serializers.ModelSerializer): + url = serializers.SerializerMethodField() + + class Meta: + fields = ( + 'id', 'required', 'url' + ) + model = DocumentTypeMetadataType + + def get_url(self, instance): + return reverse( + 'rest_api:documenttypemetadatatype-detail', args=( + instance.document_type.pk, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + + +class DocumentMetadataSerializer(serializers.HyperlinkedModelSerializer): + document = DocumentSerializer(read_only=True) metadata_type = MetadataTypeSerializer(read_only=True) + url = serializers.SerializerMethodField() - pk = serializers.IntegerField( - help_text=_('Primary key of the document metadata type.'), - read_only=True - ) + class Meta: + fields = ('document', 'id', 'metadata_type', 'url', 'value') + model = DocumentMetadata + read_only_fields = ('document', 'metadata_type',) - value = serializers.CharField( - max_length=255, - help_text=_('Value of the corresponding metadata type instance.') - ) - - def create(self, validated_data): - metadata_type = MetadataType.objects.get( - pk=validated_data['metadata_type_pk'] + def get_url(self, instance): + return reverse( + 'rest_api:documentmetadata-detail', args=( + instance.document.pk, instance.pk + ), request=self.context['request'], format=self.context['format'] ) - instance = self.document.metadata.create( - metadata_type=metadata_type, value=validated_data['value'] - ) - return instance + + def validate(self, attrs): + self.instance.value = attrs['value'] + + try: + self.instance.full_clean() + except DjangoValidationError as exception: + raise ValidationError(exception) + + return attrs -class DocumentTypeNewMetadataTypeSerializer(serializers.Serializer): +class NewDocumentMetadataSerializer(serializers.ModelSerializer): metadata_type_pk = serializers.IntegerField( - help_text=_('Primary key of the metadata type to be added.') + help_text=_( + 'Primary key of the metadata type to be added to the document.' + ), + write_only=True ) + url = serializers.SerializerMethodField() + + class Meta: + fields = ('id', 'metadata_type_pk', 'url', 'value') + model = DocumentMetadata + + def get_url(self, instance): + return reverse( + 'rest_api:documentmetadata-detail', args=( + instance.document.pk, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + + def validate(self, attrs): + attrs['document'] = self.context['document'] + attrs['metadata_type'] = MetadataType.objects.get( + pk=attrs.pop('metadata_type_pk') + ) + + instance = DocumentMetadata(**attrs) + try: + instance.full_clean() + except DjangoValidationError as exception: + raise ValidationError(exception) + + return attrs diff --git a/mayan/apps/metadata/tests/test_api.py b/mayan/apps/metadata/tests/test_api.py index 79ccff4acb..c6bf065d3d 100644 --- a/mayan/apps/metadata/tests/test_api.py +++ b/mayan/apps/metadata/tests/test_api.py @@ -4,15 +4,14 @@ from django.contrib.auth import get_user_model from django.core.urlresolvers import reverse from django.test import override_settings -from rest_framework.test import APITestCase - from documents.models import DocumentType from documents.tests import TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +from rest_api.tests import BaseAPITestCase from user_management.tests.literals import ( TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME ) -from ..models import DocumentMetadata, DocumentTypeMetadataType, MetadataType +from ..models import DocumentTypeMetadataType, MetadataType from .literals import ( TEST_METADATA_TYPE_LABEL, TEST_METADATA_TYPE_LABEL_2, @@ -21,8 +20,10 @@ from .literals import ( ) -class MetadataTypeAPITestCase(APITestCase): +class MetadataTypeAPITestCase(BaseAPITestCase): def setUp(self): + super(MetadataTypeAPITestCase, self).setUp() + self.admin_user = get_user_model().objects.create_superuser( username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD @@ -59,8 +60,10 @@ class MetadataTypeAPITestCase(APITestCase): self._create_metadata_type() response = self.client.delete( - reverse('rest_api:metadatatype-detail', - args=(self.metadata_type.pk,)) + reverse( + 'rest_api:metadatatype-detail', + args=(self.metadata_type.pk,) + ) ) self.assertEqual(response.status_code, 204) @@ -71,20 +74,24 @@ class MetadataTypeAPITestCase(APITestCase): self._create_metadata_type() response = self.client.get( - reverse('rest_api:metadatatype-detail', - args=(self.metadata_type.pk,)) + reverse( + 'rest_api:metadatatype-detail', + args=(self.metadata_type.pk,) + ) ) self.assertEqual(response.status_code, 200) self.assertEqual( response.data['label'], TEST_METADATA_TYPE_LABEL ) - def test_metadata_type_edit_via_patch_view(self): + def test_metadata_type_patch_view(self): self._create_metadata_type() response = self.client.patch( - reverse('rest_api:metadatatype-detail', - args=(self.metadata_type.pk,)), data={ + reverse( + 'rest_api:metadatatype-detail', + args=(self.metadata_type.pk,) + ), data={ 'label': TEST_METADATA_TYPE_LABEL_2, 'name': TEST_METADATA_TYPE_NAME_2 } @@ -97,12 +104,14 @@ class MetadataTypeAPITestCase(APITestCase): self.assertEqual(self.metadata_type.label, TEST_METADATA_TYPE_LABEL_2) self.assertEqual(self.metadata_type.name, TEST_METADATA_TYPE_NAME_2) - def test_metadata_type_edit_via_put_view(self): + def test_metadata_type_put_view(self): self._create_metadata_type() response = self.client.put( - reverse('rest_api:metadatatype-detail', - args=(self.metadata_type.pk,)), data={ + reverse( + 'rest_api:metadatatype-detail', + args=(self.metadata_type.pk,) + ), data={ 'label': TEST_METADATA_TYPE_LABEL_2, 'name': TEST_METADATA_TYPE_NAME_2 } @@ -125,8 +134,10 @@ class MetadataTypeAPITestCase(APITestCase): ) -class DocumentTypeMetadataTypeAPITestCase(APITestCase): +class DocumentTypeMetadataTypeAPITestCase(BaseAPITestCase): def setUp(self): + super(DocumentTypeMetadataTypeAPITestCase, self).setUp() + self.admin_user = get_user_model().objects.create_superuser( username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD @@ -147,56 +158,53 @@ class DocumentTypeMetadataTypeAPITestCase(APITestCase): def tearDown(self): self.admin_user.delete() self.document_type.delete() + super(DocumentTypeMetadataTypeAPITestCase, self).tearDown() - def test_document_type_metadata_type_optional_create(self): + def _create_document_type_metadata_type(self): + self.document_type_metadata_type = self.document_type.metadata.create( + metadata_type=self.metadata_type, required=False + ) + + def test_document_type_metadata_type_create_view(self): response = self.client.post( reverse( - 'rest_api:documenttypeoptionalmetadatatype-list', + 'rest_api:documenttypemetadatatype-list', args=(self.document_type.pk,) - ), data={'metadata_type_pk': self.metadata_type.pk} + ), data={ + 'metadata_type_pk': self.metadata_type.pk, 'required': False + } ) self.assertEqual(response.status_code, 201) - document_type_metadata_type = DocumentTypeMetadataType.objects.filter( - document_type=self.document_type, required=False - ).first() + document_type_metadata_type = DocumentTypeMetadataType.objects.first() - self.assertEqual(response.data['pk'], document_type_metadata_type.pk) + self.assertEqual(response.data['id'], document_type_metadata_type.pk) - self.assertEqual( - document_type_metadata_type.metadata_type, self.metadata_type - ) + def test_document_type_metadata_type_create_dupicate_view(self): + self._create_document_type_metadata_type() - def test_document_type_metadata_type_required_create(self): response = self.client.post( reverse( - 'rest_api:documenttyperequiredmetadatatype-list', + 'rest_api:documenttypemetadatatype-list', args=(self.document_type.pk,) - ), data={'metadata_type_pk': self.metadata_type.pk} + ), data={ + 'metadata_type_pk': self.metadata_type.pk, 'required': False + } ) - self.assertEqual(response.status_code, 201) + self.assertEqual(response.status_code, 400) + self.assertEqual(response.data.keys()[0], 'non_field_errors') - document_type_metadata_type = DocumentTypeMetadataType.objects.filter( - document_type=self.document_type, required=True - ).first() - - self.assertEqual(response.data['pk'], document_type_metadata_type.pk) - - self.assertEqual( - document_type_metadata_type.metadata_type, self.metadata_type - ) - - def test_document_type_metadata_type_delete(self): - document_type_metadata_type = self.document_type.metadata.create( - metadata_type=self.metadata_type, required=True - ) + def test_document_type_metadata_type_delete_view(self): + self._create_document_type_metadata_type() response = self.client.delete( reverse( 'rest_api:documenttypemetadatatype-detail', - args=(document_type_metadata_type.pk,) + args=( + self.document_type.pk, self.document_type_metadata_type.pk, + ), ), ) @@ -204,10 +212,69 @@ class DocumentTypeMetadataTypeAPITestCase(APITestCase): self.assertEqual(self.document_type.metadata.all().count(), 0) + def test_document_type_metadata_type_list_view(self): + self._create_document_type_metadata_type() -class DocumentMetadataAPITestCase(APITestCase): + response = self.client.get( + reverse( + 'rest_api:documenttypemetadatatype-list', + args=( + self.document_type.pk, + ), + ), + ) + + self.assertEqual(response.status_code, 200) + + self.assertEqual( + response.data['results'][0]['id'], + self.document_type_metadata_type.pk + ) + + def test_document_type_metadata_type_patch_view(self): + self._create_document_type_metadata_type() + + response = self.client.patch( + reverse( + 'rest_api:documenttypemetadatatype-detail', + args=( + self.document_type.pk, self.document_type_metadata_type.pk, + ) + ), data={ + 'required': True + } + ) + + document_type_metadata_type = DocumentTypeMetadataType.objects.first() + + self.assertEqual(response.status_code, 200) + self.assertEqual(document_type_metadata_type.required, True) + + def test_document_type_metadata_type_put_view(self): + self._create_document_type_metadata_type() + + response = self.client.put( + reverse( + 'rest_api:documenttypemetadatatype-detail', + args=( + self.document_type.pk, self.document_type_metadata_type.pk, + ) + ), data={ + 'required': True + } + ) + + document_type_metadata_type = DocumentTypeMetadataType.objects.first() + + self.assertEqual(response.status_code, 200) + self.assertEqual(document_type_metadata_type.required, True) + + +class DocumentMetadataAPITestCase(BaseAPITestCase): @override_settings(OCR_AUTO_OCR=False) def setUp(self): + super(DocumentMetadataAPITestCase, self).setUp() + self.admin_user = get_user_model().objects.create_superuser( username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD @@ -237,8 +304,14 @@ class DocumentMetadataAPITestCase(APITestCase): def tearDown(self): self.admin_user.delete() self.document_type.delete() + super(DocumentMetadataAPITestCase, self).tearDown() - def test_document_metadata_create(self): + def _create_document_metadata(self): + self.document_metadata = self.document.metadata.create( + metadata_type=self.metadata_type, value=TEST_METADATA_VALUE + ) + + def test_document_metadata_create_view(self): response = self.client.post( reverse( 'rest_api:documentmetadata-list', @@ -249,22 +322,64 @@ class DocumentMetadataAPITestCase(APITestCase): } ) - document_metadata = DocumentMetadata.objects.get( - document=self.document - ) + document_metadata = self.document.metadata.first() self.assertEqual(response.status_code, 201) - self.assertEqual(response.data['pk'], document_metadata.pk) + self.assertEqual(response.data['id'], document_metadata.pk) self.assertEqual(document_metadata.metadata_type, self.metadata_type) self.assertEqual(document_metadata.value, TEST_METADATA_VALUE) - def test_document_metadata_list(self): - document_metadata = self.document.metadata.create( - metadata_type=self.metadata_type, value=TEST_METADATA_VALUE + def test_document_metadata_create_duplicate_view(self): + self._create_document_metadata() + + response = self.client.post( + reverse( + 'rest_api:documentmetadata-list', + args=(self.document.pk,) + ), data={ + 'metadata_type_pk': self.metadata_type.pk, + 'value': TEST_METADATA_VALUE + } ) + self.assertEqual(response.status_code, 400) + self.assertEqual(response.data.keys()[0], 'non_field_errors') + + def test_document_metadata_create_invalid_lookup_value_view(self): + self.metadata_type.lookup = 'invalid,lookup,values,on,purpose' + self.metadata_type.save() + + response = self.client.post( + reverse( + 'rest_api:documentmetadata-list', + args=(self.document.pk,) + ), data={ + 'metadata_type_pk': self.metadata_type.pk, + 'value': TEST_METADATA_VALUE + } + ) + self.assertEqual(response.status_code, 400) + self.assertEqual(response.data.keys()[0], 'non_field_errors') + + def test_document_metadata_delete_view(self): + self._create_document_metadata() + + response = self.client.delete( + reverse( + 'rest_api:documentmetadata-detail', + args=(self.document.pk, self.document_metadata.pk,) + ) + ) + + self.assertEqual(response.status_code, 204) + + self.assertEqual(self.document.metadata.all().count(), 0) + + def test_document_metadata_list_view(self): + self._create_document_metadata() + response = self.client.get( reverse( 'rest_api:documentmetadata-list', args=(self.document.pk,) @@ -274,56 +389,49 @@ class DocumentMetadataAPITestCase(APITestCase): self.assertEqual(response.status_code, 200) self.assertEqual( - response.data['results'][0]['document'], self.document.pk + response.data['results'][0]['document']['id'], self.document.pk ) self.assertEqual( - response.data['results'][0]['metadata_type'], self.metadata_type.pk + response.data['results'][0]['metadata_type']['id'], + self.metadata_type.pk ) self.assertEqual( response.data['results'][0]['value'], TEST_METADATA_VALUE ) self.assertEqual( - response.data['results'][0]['id'], document_metadata.pk + response.data['results'][0]['id'], self.document_metadata.pk ) - def test_document_metadata_edit(self): - document_metadata = self.document.metadata.create( - metadata_type=self.metadata_type, value=TEST_METADATA_VALUE - ) + def test_document_metadata_patch_view(self): + self._create_document_metadata() - response = self.client.put( + response = self.client.patch( reverse( 'rest_api:documentmetadata-detail', - args=(document_metadata.pk,) + args=(self.document.pk, self.document_metadata.pk,) ), data={ 'value': TEST_METADATA_VALUE_EDITED } ) self.assertEqual(response.status_code, 200) - - self.assertEqual( - response.data['document'], self.document.pk - ) - self.assertEqual( - response.data['metadata_type'], self.metadata_type.pk - ) self.assertEqual( response.data['value'], TEST_METADATA_VALUE_EDITED ) - def test_document_metadata_delete(self): - document_metadata = self.document.metadata.create( - metadata_type=self.metadata_type, value=TEST_METADATA_VALUE - ) + def test_document_metadata_put_view(self): + self._create_document_metadata() - response = self.client.delete( + response = self.client.put( reverse( 'rest_api:documentmetadata-detail', - args=(document_metadata.pk,) - ) + args=(self.document.pk, self.document_metadata.pk,) + ), data={ + 'value': TEST_METADATA_VALUE_EDITED + } ) - self.assertEqual(response.status_code, 204) - - self.assertEqual(self.document.metadata.all().count(), 0) + self.assertEqual(response.status_code, 200) + self.assertEqual( + response.data['value'], TEST_METADATA_VALUE_EDITED + ) diff --git a/mayan/apps/metadata/urls.py b/mayan/apps/metadata/urls.py index e317927bd1..658368c25e 100644 --- a/mayan/apps/metadata/urls.py +++ b/mayan/apps/metadata/urls.py @@ -4,10 +4,8 @@ from django.conf.urls import url from .api_views import ( APIDocumentMetadataListView, APIDocumentMetadataView, - APIDocumentTypeMetadataTypeOptionalListView, - APIDocumentTypeMetadataTypeRequiredListView, - APIDocumentTypeMetadataTypeView, APIMetadataTypeListView, - APIMetadataTypeView + APIDocumentTypeMetadataTypeListView, APIDocumentTypeMetadataTypeView, + APIMetadataTypeListView, APIMetadataTypeView ) from .views import ( DocumentMetadataAddView, DocumentMetadataEditView, @@ -82,30 +80,25 @@ api_urls = [ name='metadatatype-list' ), url( - r'^metadata_types/(?P[0-9]+)/$', APIMetadataTypeView.as_view(), - name='metadatatype-detail' + r'^metadata_types/(?P\d+)/$', + APIMetadataTypeView.as_view(), name='metadatatype-detail' ), url( - r'^document/metadata/(?P[0-9]+)/$', - APIDocumentMetadataView.as_view(), name='documentmetadata-detail' + r'^document_types/(?P\d+)/metadata_types/$', + APIDocumentTypeMetadataTypeListView.as_view(), + name='documenttypemetadatatype-list' ), url( - r'^document/(?P\d+)/metadata/$', - APIDocumentMetadataListView.as_view(), name='documentmetadata-list' - ), - url( - r'^document_type/(?P[0-9]+)/metadata_types/optional/$', - APIDocumentTypeMetadataTypeOptionalListView.as_view(), - name='documenttypeoptionalmetadatatype-list' - ), - url( - r'^document_type/(?P[0-9]+)/metadata_types/required/$', - APIDocumentTypeMetadataTypeRequiredListView.as_view(), - name='documenttyperequiredmetadatatype-list' - ), - url( - r'^document_type_metadata_type/(?P\d+)/$', + r'^document_types/(?P\d+)/metadata_types/(?P\d+)/$', APIDocumentTypeMetadataTypeView.as_view(), name='documenttypemetadatatype-detail' ), + url( + r'^documents/(?P\d+)/metadata/$', + APIDocumentMetadataListView.as_view(), name='documentmetadata-list' + ), + url( + r'^documents/(?P\d+)/metadata/(?P\d+)/$', + APIDocumentMetadataView.as_view(), name='documentmetadata-detail' + ), ] diff --git a/mayan/apps/metadata/widgets.py b/mayan/apps/metadata/widgets.py index 8307a66d5c..a70540577f 100644 --- a/mayan/apps/metadata/widgets.py +++ b/mayan/apps/metadata/widgets.py @@ -1,14 +1,14 @@ from __future__ import unicode_literals +from django.utils.html import format_html_join def get_metadata_string(document): """ Return a formated representation of a document's metadata values """ - return ', '.join( - [ - '%s - %s' % ( - document_metadata.metadata_type, document_metadata.value - ) for document_metadata in document.metadata.all() - ] + return format_html_join( + '\n', '', + ((document_metadata.metadata_type,document_metadata.metadata_type_id,document_metadata.id,document_metadata.value) + for document_metadata in document.metadata.all() + ) ) diff --git a/mayan/apps/mirroring/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/ar/LC_MESSAGES/django.mo index de93f15b39..1904e55965 100644 Binary files a/mayan/apps/mirroring/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/ar/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/ar/LC_MESSAGES/django.po index c92fce1501..2d03879dcb 100644 --- a/mayan/apps/mirroring/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/ar/LC_MESSAGES/django.po @@ -1,21 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/" +"ar/)\n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" #: apps.py:9 settings.py:7 msgid "Mirroring" diff --git a/mayan/apps/mirroring/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/bg/LC_MESSAGES/django.mo index 0bab54a440..344da78fc2 100644 Binary files a/mayan/apps/mirroring/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/bg/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/bg/LC_MESSAGES/django.po index 07bec77092..0884e7c0cb 100644 --- a/mayan/apps/mirroring/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/bg/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" +"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:7 diff --git a/mayan/apps/mirroring/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/bs_BA/LC_MESSAGES/django.mo index 62051bec48..d79cc8c1fc 100644 Binary files a/mayan/apps/mirroring/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/bs_BA/LC_MESSAGES/django.po index ac177fba8f..a483a6a193 100644 --- a/mayan/apps/mirroring/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/bs_BA/LC_MESSAGES/django.po @@ -1,21 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" +"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/" +"rosarior/mayan-edms/language/bs_BA/)\n" +"Language: bs_BA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bs_BA\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" +"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" #: apps.py:9 settings.py:7 msgid "Mirroring" diff --git a/mayan/apps/mirroring/locale/da/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/da/LC_MESSAGES/django.mo index 51a000c16a..b0e1003f57 100644 Binary files a/mayan/apps/mirroring/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/da/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/da/LC_MESSAGES/django.po index 234d769840..d1a8793d47 100644 --- a/mayan/apps/mirroring/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/da/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" +"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/" +"da/)\n" +"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:7 diff --git a/mayan/apps/mirroring/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/de_DE/LC_MESSAGES/django.mo index 6cff24c793..2b78f173d4 100644 Binary files a/mayan/apps/mirroring/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/de_DE/LC_MESSAGES/django.po index b087316afb..02e62013f1 100644 --- a/mayan/apps/mirroring/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/de_DE/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Berny , 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:08+0000\n" "Last-Translator: Mathias Behrle \n" -"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" +"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:7 @@ -24,8 +25,12 @@ msgstr "Spiegelung" #: settings.py:11 msgid "Time in seconds to cache the path lookup to a document." -msgstr "Zeit in Sekunden, die ein Pfad zu einem Dokument zwischengespeichert werden soll." +msgstr "" +"Zeit in Sekunden, die ein Pfad zu einem Dokument zwischengespeichert werden " +"soll." #: settings.py:15 msgid "Time in seconds to cache the path lookup to an index node." -msgstr "Zeit in Sekunden, die ein Pfad zu einem zu einem Indexknotenpunkt zwischengespeichert werden soll." +msgstr "" +"Zeit in Sekunden, die ein Pfad zu einem zu einem Indexknotenpunkt " +"zwischengespeichert werden soll." diff --git a/mayan/apps/mirroring/locale/en/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/en/LC_MESSAGES/django.mo index 6bcd9f629a..2a49b9eccb 100644 Binary files a/mayan/apps/mirroring/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po index 4de25c13e7..4596731f3c 100644 --- a/mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/mayan/apps/mirroring/locale/es/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/es/LC_MESSAGES/django.mo index aeaabc0089..9b31426430 100644 Binary files a/mayan/apps/mirroring/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/es/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/es/LC_MESSAGES/django.po index bb26ad0ebc..dae36e103a 100644 --- a/mayan/apps/mirroring/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/es/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Roberto Rosario, 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:21+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:7 @@ -24,8 +25,12 @@ msgstr "Reflejado" #: settings.py:11 msgid "Time in seconds to cache the path lookup to a document." -msgstr "Tiempo en segundos durante los cuales se almacenará en caché la ruta de búsqueda de acceso a un documento." +msgstr "" +"Tiempo en segundos durante los cuales se almacenará en caché la ruta de " +"búsqueda de acceso a un documento." #: settings.py:15 msgid "Time in seconds to cache the path lookup to an index node." -msgstr "Tiempo en segundos durante los cuales se almacenará en caché la ruta de búsqueda de acceso a un nodo de índice." +msgstr "" +"Tiempo en segundos durante los cuales se almacenará en caché la ruta de " +"búsqueda de acceso a un nodo de índice." diff --git a/mayan/apps/mirroring/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/fa/LC_MESSAGES/django.mo index 3b64a3b977..b4165376ba 100644 Binary files a/mayan/apps/mirroring/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/fa/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/fa/LC_MESSAGES/django.po index cca30de7cb..a103f3337f 100644 --- a/mayan/apps/mirroring/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/fa/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/" +"language/fa/)\n" +"Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:9 settings.py:7 diff --git a/mayan/apps/mirroring/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/fr/LC_MESSAGES/django.mo index 973c969c2d..595d11bb4d 100644 Binary files a/mayan/apps/mirroring/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/fr/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/fr/LC_MESSAGES/django.po index 0d80bc74a1..b2d307b2fb 100644 --- a/mayan/apps/mirroring/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/fr/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Thierry Schott , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:08+0000\n" "Last-Translator: Thierry Schott \n" -"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" +"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/" +"fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:9 settings.py:7 @@ -24,8 +25,10 @@ msgstr "Duplication" #: settings.py:11 msgid "Time in seconds to cache the path lookup to a document." -msgstr "Temps en secondes de rétention en cache du chemin d'accès à un document." +msgstr "" +"Temps en secondes de rétention en cache du chemin d'accès à un document." #: settings.py:15 msgid "Time in seconds to cache the path lookup to an index node." -msgstr "Temps en seconde de rétention en cache du chemin d'accès à un noeud d'index." +msgstr "" +"Temps en seconde de rétention en cache du chemin d'accès à un noeud d'index." diff --git a/mayan/apps/mirroring/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/hu/LC_MESSAGES/django.mo index 4e73198520..4827cb40d5 100644 Binary files a/mayan/apps/mirroring/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/hu/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/hu/LC_MESSAGES/django.po index 12c85511a0..c7c45fb143 100644 --- a/mayan/apps/mirroring/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/hu/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" +"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/hu/)\n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:7 diff --git a/mayan/apps/mirroring/locale/id/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/id/LC_MESSAGES/django.mo index 479a91534c..5722783775 100644 Binary files a/mayan/apps/mirroring/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/id/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/id/LC_MESSAGES/django.po index d2676a954c..7115c5f959 100644 --- a/mayan/apps/mirroring/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/id/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" +"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/" +"language/id/)\n" +"Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:9 settings.py:7 diff --git a/mayan/apps/mirroring/locale/it/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/it/LC_MESSAGES/django.mo index 5b9e2fce33..ac5fafbdc6 100644 Binary files a/mayan/apps/mirroring/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/it/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/it/LC_MESSAGES/django.po index 0d44e378d7..d9a42f4da9 100644 --- a/mayan/apps/mirroring/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/it/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Giovanni Tricarico , 2016 # Marco Camplese , 2016 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-09-24 08:52+0000\n" "Last-Translator: Marco Camplese \n" -"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" +"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:7 @@ -25,8 +26,11 @@ msgstr "Mirroring " #: settings.py:11 msgid "Time in seconds to cache the path lookup to a document." -msgstr "Tempo in secondi per mettere in cache il percorso di ricerca del documento." +msgstr "" +"Tempo in secondi per mettere in cache il percorso di ricerca del documento." #: settings.py:15 msgid "Time in seconds to cache the path lookup to an index node." -msgstr "Tempo in secondi per mettere in cache il percorso di ricerca del nodo indice.." +msgstr "" +"Tempo in secondi per mettere in cache il percorso di ricerca del nodo " +"indice.." diff --git a/mayan/apps/mirroring/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/nl_NL/LC_MESSAGES/django.mo index 9cb6cef19b..f1c6fb86e1 100644 Binary files a/mayan/apps/mirroring/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/nl_NL/LC_MESSAGES/django.po index efb5a083f6..9e7d481941 100644 --- a/mayan/apps/mirroring/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/nl_NL/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Evelijn Saaltink , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-11-09 16:40+0000\n" "Last-Translator: Evelijn Saaltink \n" -"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-" +"edms/language/nl_NL/)\n" +"Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:7 diff --git a/mayan/apps/mirroring/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/pl/LC_MESSAGES/django.mo index 1d962cf8cf..8580d84a2a 100644 Binary files a/mayan/apps/mirroring/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/pl/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/pl/LC_MESSAGES/django.po index 050c8c3a01..6089c39d15 100644 --- a/mayan/apps/mirroring/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/pl/LC_MESSAGES/django.po @@ -1,21 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" +"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/" +"pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" #: apps.py:9 settings.py:7 msgid "Mirroring" diff --git a/mayan/apps/mirroring/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/pt/LC_MESSAGES/django.mo index d6cb0d7f17..7b667ffac7 100644 Binary files a/mayan/apps/mirroring/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/pt/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/pt/LC_MESSAGES/django.po index 5102d6b7c7..36ae2bff34 100644 --- a/mayan/apps/mirroring/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/pt/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:7 diff --git a/mayan/apps/mirroring/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/pt_BR/LC_MESSAGES/django.mo index 4aac618884..a0f881142b 100644 Binary files a/mayan/apps/mirroring/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/pt_BR/LC_MESSAGES/django.po index 8996463034..a460b47537 100644 --- a/mayan/apps/mirroring/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/pt_BR/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Aline Freitas , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-11-04 19:01+0000\n" "Last-Translator: Aline Freitas \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-" +"edms/language/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:9 settings.py:7 @@ -24,8 +25,12 @@ msgstr "Espelhamento" #: settings.py:11 msgid "Time in seconds to cache the path lookup to a document." -msgstr "Tempo em segundos durante o qual se armazenará no cache a rota de busca de acesso a um documento." +msgstr "" +"Tempo em segundos durante o qual se armazenará no cache a rota de busca de " +"acesso a um documento." #: settings.py:15 msgid "Time in seconds to cache the path lookup to an index node." -msgstr "Tempo em segundos durante o qual se armazenará em cache a rota de busca de acesso a um nó de índice." +msgstr "" +"Tempo em segundos durante o qual se armazenará em cache a rota de busca de " +"acesso a um nó de índice." diff --git a/mayan/apps/mirroring/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/ro_RO/LC_MESSAGES/django.mo index 88d7137d3d..de1b86f65d 100644 Binary files a/mayan/apps/mirroring/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/ro_RO/LC_MESSAGES/django.po index e90bbb5f3c..405b036997 100644 --- a/mayan/apps/mirroring/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/ro_RO/LC_MESSAGES/django.po @@ -1,21 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-" +"edms/language/ro_RO/)\n" +"Language: ro_RO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ro_RO\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" #: apps.py:9 settings.py:7 msgid "Mirroring" diff --git a/mayan/apps/mirroring/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/ru/LC_MESSAGES/django.mo index 50188f62fa..ec2c5b3b23 100644 Binary files a/mayan/apps/mirroring/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/ru/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/ru/LC_MESSAGES/django.po index eac7a5d1cd..01da6fbf90 100644 --- a/mayan/apps/mirroring/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/ru/LC_MESSAGES/django.po @@ -1,22 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # lilo.panic, 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-07-19 20:05+0000\n" "Last-Translator: lilo.panic\n" -"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" #: apps.py:9 settings.py:7 msgid "Mirroring" diff --git a/mayan/apps/mirroring/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/sl_SI/LC_MESSAGES/django.mo index eb496c2c01..65f1f9192e 100644 Binary files a/mayan/apps/mirroring/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/sl_SI/LC_MESSAGES/django.po index 393a1b22b8..a0ecdd98f7 100644 --- a/mayan/apps/mirroring/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/sl_SI/LC_MESSAGES/django.po @@ -1,21 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-" +"edms/language/sl_SI/)\n" +"Language: sl_SI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: sl_SI\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" #: apps.py:9 settings.py:7 msgid "Mirroring" diff --git a/mayan/apps/mirroring/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/vi_VN/LC_MESSAGES/django.mo index 7acdd78d69..f4c3500671 100644 Binary files a/mayan/apps/mirroring/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/vi_VN/LC_MESSAGES/django.po index 8378a062d1..ecca978578 100644 --- a/mayan/apps/mirroring/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/vi_VN/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/" +"mayan-edms/language/vi_VN/)\n" +"Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:9 settings.py:7 diff --git a/mayan/apps/mirroring/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/mirroring/locale/zh_CN/LC_MESSAGES/django.mo index 0b05489337..5e100432d2 100644 Binary files a/mayan/apps/mirroring/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/mirroring/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/mirroring/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/mirroring/locale/zh_CN/LC_MESSAGES/django.po index 90012aad6d..a165021041 100644 --- a/mayan/apps/mirroring/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/mirroring/locale/zh_CN/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:11+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" +"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/" +"language/zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:9 settings.py:7 diff --git a/mayan/apps/motd/api_views.py b/mayan/apps/motd/api_views.py new file mode 100644 index 0000000000..4799ab357d --- /dev/null +++ b/mayan/apps/motd/api_views.py @@ -0,0 +1,76 @@ +from __future__ import absolute_import, unicode_literals + +from rest_framework import generics + +from rest_api.filters import MayanObjectPermissionsFilter +from rest_api.permissions import MayanPermission + +from .models import Message +from .permissions import ( + permission_message_create, permission_message_delete, + permission_message_edit, permission_message_view +) +from .serializers import MessageSerializer + + +class APIMessageListView(generics.ListCreateAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = {'GET': (permission_message_view,)} + mayan_view_permissions = {'POST': (permission_message_create,)} + permission_classes = (MayanPermission,) + queryset = Message.objects.all() + serializer_class = MessageSerializer + + def get(self, *args, **kwargs): + """ + Returns a list of all the messages. + """ + + return super(APIMessageListView, self).get(*args, **kwargs) + + def post(self, *args, **kwargs): + """ + Create a new message. + """ + + return super(APIMessageListView, self).post(*args, **kwargs) + + +class APIMessageView(generics.RetrieveUpdateDestroyAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = { + 'DELETE': (permission_message_delete,), + 'GET': (permission_message_view,), + 'PATCH': (permission_message_edit,), + 'PUT': (permission_message_edit,) + } + queryset = Message.objects.all() + serializer_class = MessageSerializer + + def delete(self, *args, **kwargs): + """ + Delete the selected message. + """ + + return super(APIMessageView, self).delete(*args, **kwargs) + + def get(self, *args, **kwargs): + """ + Return the details of the selected message. + """ + + return super(APIMessageView, self).get(*args, **kwargs) + + def patch(self, *args, **kwargs): + """ + Edit the selected message. + """ + + return super(APIMessageView, self).patch(*args, **kwargs) + + def put(self, *args, **kwargs): + """ + Edit the selected message. + """ + + return super(APIMessageView, self).put(*args, **kwargs) diff --git a/mayan/apps/motd/apps.py b/mayan/apps/motd/apps.py index 0258d066da..af38dfa4c0 100644 --- a/mayan/apps/motd/apps.py +++ b/mayan/apps/motd/apps.py @@ -6,6 +6,7 @@ from django.utils.translation import ugettext_lazy as _ from common import MayanAppConfig, menu_object, menu_secondary, menu_setup from navigation import SourceColumn +from rest_api.classes import APIEndPoint from .links import ( link_message_create, link_message_delete, link_message_edit, @@ -16,13 +17,15 @@ logger = logging.getLogger(__name__) class MOTDApp(MayanAppConfig): + has_tests = True name = 'motd' - test = True verbose_name = _('Message of the day') def ready(self): super(MOTDApp, self).ready() + APIEndPoint(app=self, version_string='1') + Message = self.get_model('Message') SourceColumn( diff --git a/mayan/apps/motd/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/ar/LC_MESSAGES/django.mo index 56d5a2babf..6d78c15882 100644 Binary files a/mayan/apps/motd/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/ar/LC_MESSAGES/django.po b/mayan/apps/motd/locale/ar/LC_MESSAGES/django.po index 324015cb62..4f0735753b 100644 --- a/mayan/apps/motd/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/ar/LC_MESSAGES/django.po @@ -1,39 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/" +"ar/)\n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "لا شيء" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/bg/LC_MESSAGES/django.mo index 94f1a9c706..cd49cbac1c 100644 Binary files a/mayan/apps/motd/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/bg/LC_MESSAGES/django.po b/mayan/apps/motd/locale/bg/LC_MESSAGES/django.po index b1ff9522f6..f8bddbde73 100644 --- a/mayan/apps/motd/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/bg/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" +"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Няма" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/bs_BA/LC_MESSAGES/django.mo index da5ac9527f..ec49ca5f99 100644 Binary files a/mayan/apps/motd/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/motd/locale/bs_BA/LC_MESSAGES/django.po index 05d1f0a9c5..ead89c3596 100644 --- a/mayan/apps/motd/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/bs_BA/LC_MESSAGES/django.po @@ -1,39 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" +"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/" +"rosarior/mayan-edms/language/bs_BA/)\n" +"Language: bs_BA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bs_BA\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" +"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" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Nijedno" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/da/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/da/LC_MESSAGES/django.mo index 84dbc72b69..a3c5db8192 100644 Binary files a/mayan/apps/motd/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/da/LC_MESSAGES/django.po b/mayan/apps/motd/locale/da/LC_MESSAGES/django.po index da83d65c8a..9b446f4d6b 100644 --- a/mayan/apps/motd/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/da/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" +"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/" +"da/)\n" +"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Ingen" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/de_DE/LC_MESSAGES/django.mo index 140ebef966..29bdd8ce7c 100644 Binary files a/mayan/apps/motd/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/motd/locale/de_DE/LC_MESSAGES/django.po index 39006d95d2..43c3cd5c22 100644 --- a/mayan/apps/motd/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/de_DE/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Berny , 2016 # Tobias Paepke , 2016 @@ -9,33 +9,34 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-05-20 21:31+0000\n" "Last-Translator: Tobias Paepke \n" -"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" +"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "Nachricht des Tages" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "Aktiviert" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "Startdatum und Uhrzeit" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Keine" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "Enddatum und Uhrzeit" diff --git a/mayan/apps/motd/locale/en/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/en/LC_MESSAGES/django.mo index 6bcd9f629a..2a49b9eccb 100644 Binary files a/mayan/apps/motd/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/en/LC_MESSAGES/django.po b/mayan/apps/motd/locale/en/LC_MESSAGES/django.po index 0db8de404c..63eb94a3af 100644 --- a/mayan/apps/motd/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,23 +17,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/es/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/es/LC_MESSAGES/django.mo index 7efba47068..b65fef3698 100644 Binary files a/mayan/apps/motd/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/es/LC_MESSAGES/django.po b/mayan/apps/motd/locale/es/LC_MESSAGES/django.po index 34c363de35..c0262658a1 100644 --- a/mayan/apps/motd/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/es/LC_MESSAGES/django.po @@ -1,40 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Roberto Rosario, 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:13+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "Mensaje del día " -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "Habilitado" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "Fecha y hora de comienzo" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Ninguno" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "Fecha y hora cancelación" @@ -68,7 +69,8 @@ msgstr "Mensaje" #: models.py:23 msgid "Date and time after which this message will be displayed." -msgstr "Fecha y hora después de la cual este mensaje comenzara a ser desplegado." +msgstr "" +"Fecha y hora después de la cual este mensaje comenzara a ser desplegado." #: models.py:28 msgid "Date and time until when this message is to be displayed." diff --git a/mayan/apps/motd/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/fa/LC_MESSAGES/django.mo index 21beb0f96b..8eeb06f70f 100644 Binary files a/mayan/apps/motd/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/fa/LC_MESSAGES/django.po b/mayan/apps/motd/locale/fa/LC_MESSAGES/django.po index c0c7967e4b..d994d3fab7 100644 --- a/mayan/apps/motd/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/fa/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/" +"language/fa/)\n" +"Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "فعال شده" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "هیچکدام." -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/fr/LC_MESSAGES/django.mo index 19af43041f..5925041e05 100644 Binary files a/mayan/apps/motd/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/fr/LC_MESSAGES/django.po b/mayan/apps/motd/locale/fr/LC_MESSAGES/django.po index ebf659b44c..e534da5a12 100644 --- a/mayan/apps/motd/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/fr/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-04-26 07:54+0000\n" "Last-Translator: Baptiste GAILLET \n" -"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" +"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/" +"fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "Message du jour" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "Activé" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "Date de début" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Aucun" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "Date de fin" diff --git a/mayan/apps/motd/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/hu/LC_MESSAGES/django.mo index 1806831aae..11f9f2f672 100644 Binary files a/mayan/apps/motd/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/hu/LC_MESSAGES/django.po b/mayan/apps/motd/locale/hu/LC_MESSAGES/django.po index e39f06cc30..d2cbe38244 100644 --- a/mayan/apps/motd/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/hu/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" +"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/hu/)\n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Semmi" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/id/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/id/LC_MESSAGES/django.mo index e55867630e..96e7e0ead4 100644 Binary files a/mayan/apps/motd/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/id/LC_MESSAGES/django.po b/mayan/apps/motd/locale/id/LC_MESSAGES/django.po index d86531e352..fe23084fc6 100644 --- a/mayan/apps/motd/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/id/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" +"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/" +"language/id/)\n" +"Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/it/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/it/LC_MESSAGES/django.mo index a8a530aaa4..04a1dac62c 100644 Binary files a/mayan/apps/motd/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/it/LC_MESSAGES/django.po b/mayan/apps/motd/locale/it/LC_MESSAGES/django.po index c94b91b5a2..b43f7df690 100644 --- a/mayan/apps/motd/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/it/LC_MESSAGES/django.po @@ -1,40 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Marco Camplese , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-09-24 10:04+0000\n" "Last-Translator: Marco Camplese \n" -"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" +"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "Messaggio del giorno" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "Abilitato" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "Data e ora inizio" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Nessuna " -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "Data e ora fine" diff --git a/mayan/apps/motd/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/nl_NL/LC_MESSAGES/django.mo index 12c7950e30..a56edf786c 100644 Binary files a/mayan/apps/motd/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/motd/locale/nl_NL/LC_MESSAGES/django.po index afed4b1605..427bbb0dc0 100644 --- a/mayan/apps/motd/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/nl_NL/LC_MESSAGES/django.po @@ -1,40 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Evelijn Saaltink , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-11-01 09:04+0000\n" "Last-Translator: Evelijn Saaltink \n" -"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-" +"edms/language/nl_NL/)\n" +"Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "Bericht van de dag" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "Ingeschakeld" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Geen" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/pl/LC_MESSAGES/django.mo index 37cd5b08d1..adc1885f97 100644 Binary files a/mayan/apps/motd/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/pl/LC_MESSAGES/django.po b/mayan/apps/motd/locale/pl/LC_MESSAGES/django.po index b549ae513d..9d62bcc214 100644 --- a/mayan/apps/motd/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/pl/LC_MESSAGES/django.po @@ -1,39 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" +"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/" +"pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "Włączone" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Brak" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/pt/LC_MESSAGES/django.mo index dc6cd83cf8..e2a691f202 100644 Binary files a/mayan/apps/motd/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/pt/LC_MESSAGES/django.po b/mayan/apps/motd/locale/pt/LC_MESSAGES/django.po index 5b789a953d..58c4ace6bb 100644 --- a/mayan/apps/motd/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/pt/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Nenhum" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/pt_BR/LC_MESSAGES/django.mo index dcce68a211..3ac1b0cfe0 100644 Binary files a/mayan/apps/motd/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/motd/locale/pt_BR/LC_MESSAGES/django.po index 3312d49b26..2e51a30120 100644 --- a/mayan/apps/motd/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/pt_BR/LC_MESSAGES/django.po @@ -1,40 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Aline Freitas , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-11-17 23:07+0000\n" "Last-Translator: Aline Freitas \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-" +"edms/language/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "Mensagem do dia" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "habilitado" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "Data inicial" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Nenhum" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "Data final" diff --git a/mayan/apps/motd/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/ro_RO/LC_MESSAGES/django.mo index 8014d5f271..42ea6604a6 100644 Binary files a/mayan/apps/motd/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/motd/locale/ro_RO/LC_MESSAGES/django.po index 829432e60a..d6329c1e58 100644 --- a/mayan/apps/motd/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/ro_RO/LC_MESSAGES/django.po @@ -1,39 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-" +"edms/language/ro_RO/)\n" +"Language: ro_RO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ro_RO\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Nici unul" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/ru/LC_MESSAGES/django.mo index 0a5c5af43c..159e93b043 100644 Binary files a/mayan/apps/motd/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/ru/LC_MESSAGES/django.po b/mayan/apps/motd/locale/ru/LC_MESSAGES/django.po index 508e21c03d..d4fafb8c08 100644 --- a/mayan/apps/motd/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/ru/LC_MESSAGES/django.po @@ -1,40 +1,43 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # lilo.panic, 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-11-02 04:15+0000\n" "Last-Translator: lilo.panic\n" -"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "Объявление дня" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "Доступно" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "Дата и время начала" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Ни один" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "Дата и время окончания" diff --git a/mayan/apps/motd/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/sl_SI/LC_MESSAGES/django.mo index b135516d4e..cd6351f4f8 100644 Binary files a/mayan/apps/motd/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/motd/locale/sl_SI/LC_MESSAGES/django.po index 6d986669c1..dd665d9979 100644 --- a/mayan/apps/motd/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/sl_SI/LC_MESSAGES/django.po @@ -1,39 +1,41 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-" +"edms/language/sl_SI/)\n" +"Language: sl_SI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: sl_SI\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "Brez" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/vi_VN/LC_MESSAGES/django.mo index 1130a9a565..8a1380ad07 100644 Binary files a/mayan/apps/motd/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/motd/locale/vi_VN/LC_MESSAGES/django.po index e1fd1f8136..c474bcd629 100644 --- a/mayan/apps/motd/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/vi_VN/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/" +"mayan-edms/language/vi_VN/)\n" +"Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "None" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/motd/locale/zh_CN/LC_MESSAGES/django.mo index 04f6b653de..547218db9f 100644 Binary files a/mayan/apps/motd/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/motd/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/motd/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/motd/locale/zh_CN/LC_MESSAGES/django.po index 82766ee890..127daaba1d 100644 --- a/mayan/apps/motd/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/motd/locale/zh_CN/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:55-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 20:55+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" +"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/" +"language/zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:21 links.py:25 permissions.py:7 +#: apps.py:22 links.py:25 permissions.py:7 msgid "Message of the day" msgstr "" -#: apps.py:29 models.py:20 +#: apps.py:32 models.py:20 msgid "Enabled" msgstr "" -#: apps.py:32 models.py:24 +#: apps.py:35 models.py:24 msgid "Start date time" msgstr "" -#: apps.py:33 apps.py:37 +#: apps.py:36 apps.py:40 msgid "None" msgstr "无" -#: apps.py:36 models.py:29 +#: apps.py:39 models.py:29 msgid "End date time" msgstr "" diff --git a/mayan/apps/motd/serializers.py b/mayan/apps/motd/serializers.py new file mode 100644 index 0000000000..1637ac91b6 --- /dev/null +++ b/mayan/apps/motd/serializers.py @@ -0,0 +1,17 @@ +from __future__ import absolute_import, unicode_literals + +from rest_framework import serializers + +from .models import Message + + +class MessageSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + extra_kwargs = { + 'url': {'view_name': 'rest_api:message-detail'}, + } + fields = ( + 'end_datetime', 'enabled', 'label', 'message', 'start_datetime', + 'id', 'url' + ) + model = Message diff --git a/mayan/apps/motd/tests/literals.py b/mayan/apps/motd/tests/literals.py new file mode 100644 index 0000000000..431ef052bb --- /dev/null +++ b/mayan/apps/motd/tests/literals.py @@ -0,0 +1,6 @@ +from __future__ import unicode_literals + +TEST_LABEL = 'test label' +TEST_LABEL_EDITED = 'test label edited' +TEST_MESSAGE = 'test message' +TEST_MESSAGE_EDITED = 'test message edited' diff --git a/mayan/apps/motd/tests/test_api.py b/mayan/apps/motd/tests/test_api.py new file mode 100644 index 0000000000..53b6ba7c30 --- /dev/null +++ b/mayan/apps/motd/tests/test_api.py @@ -0,0 +1,104 @@ +from __future__ import unicode_literals + +from django.contrib.auth import get_user_model +from django.core.urlresolvers import reverse +from django.test import override_settings + +from rest_api.tests import BaseAPITestCase +from user_management.tests.literals import ( + TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME +) + +from ..models import Message + +from .literals import ( + TEST_LABEL, TEST_LABEL_EDITED, TEST_MESSAGE, TEST_MESSAGE_EDITED +) + + +@override_settings(OCR_AUTO_OCR=False) +class MOTDAPITestCase(BaseAPITestCase): + def setUp(self): + super(MOTDAPITestCase, self).setUp() + + self.admin_user = get_user_model().objects.create_superuser( + username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, + password=TEST_ADMIN_PASSWORD + ) + + self.client.login( + username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD + ) + + def _create_message(self): + return Message.objects.create( + label=TEST_LABEL, message=TEST_MESSAGE + ) + + def test_message_create_view(self): + response = self.client.post( + reverse('rest_api:message-list'), { + 'label': TEST_LABEL, 'message': TEST_MESSAGE + } + ) + + message = Message.objects.first() + self.assertEqual(response.data['id'], message.pk) + self.assertEqual(response.data['label'], TEST_LABEL) + self.assertEqual(response.data['message'], TEST_MESSAGE) + + self.assertEqual(Message.objects.count(), 1) + self.assertEqual(message.label, TEST_LABEL) + self.assertEqual(message.message, TEST_MESSAGE) + + def test_message_delete_view(self): + message = self._create_message() + + self.client.delete( + reverse('rest_api:message-detail', args=(message.pk,)) + ) + + self.assertEqual(Message.objects.count(), 0) + + def test_message_detail_view(self): + message = self._create_message() + + response = self.client.get( + reverse('rest_api:message-detail', args=(message.pk,)) + ) + + self.assertEqual( + response.data['label'], TEST_LABEL + ) + + def test_message_patch_view(self): + message = self._create_message() + + self.client.patch( + reverse('rest_api:message-detail', args=(message.pk,)), + { + 'label': TEST_LABEL_EDITED, + 'message': TEST_MESSAGE_EDITED + } + ) + + message.refresh_from_db() + + self.assertEqual(message.label, TEST_LABEL_EDITED) + self.assertEqual(message.message, TEST_MESSAGE_EDITED) + + def test_message_put_view(self): + message = self._create_message() + + self.client.put( + reverse('rest_api:message-detail', args=(message.pk,)), + { + 'label': TEST_LABEL_EDITED, + 'message': TEST_MESSAGE_EDITED + } + ) + + message.refresh_from_db() + + self.assertEqual(message.label, TEST_LABEL_EDITED) + self.assertEqual(message.message, TEST_MESSAGE_EDITED) diff --git a/mayan/apps/motd/tests/test_models.py b/mayan/apps/motd/tests/test_models.py index bb250982fa..457cacedac 100644 --- a/mayan/apps/motd/tests/test_models.py +++ b/mayan/apps/motd/tests/test_models.py @@ -7,8 +7,7 @@ from django.utils import timezone from ..models import Message -TEST_LABEL = 'test label' -TEST_MESSAGE = 'test message' +from .literals import TEST_LABEL, TEST_MESSAGE class MOTDTestCase(TestCase): diff --git a/mayan/apps/motd/urls.py b/mayan/apps/motd/urls.py index 2bec1ae108..7ee0ff1740 100644 --- a/mayan/apps/motd/urls.py +++ b/mayan/apps/motd/urls.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from django.conf.urls import url +from .api_views import APIMessageListView, APIMessageView from .views import ( MessageCreateView, MessageDeleteView, MessageEditView, MessageListView ) @@ -17,3 +18,11 @@ urlpatterns = [ name='message_delete' ), ] + +api_urls = [ + url(r'^messages/$', APIMessageListView.as_view(), name='message-list'), + url( + r'^messages/(?P[0-9]+)/$', APIMessageView.as_view(), + name='message-detail' + ), +] diff --git a/mayan/apps/navigation/apps.py b/mayan/apps/navigation/apps.py index e529d10406..c7289ffb0b 100644 --- a/mayan/apps/navigation/apps.py +++ b/mayan/apps/navigation/apps.py @@ -6,6 +6,6 @@ from common.apps import MayanAppConfig class NavigationApp(MayanAppConfig): + has_tests = True name = 'navigation' - test = True verbose_name = _('Navigation') diff --git a/mayan/apps/navigation/classes.py b/mayan/apps/navigation/classes.py index 6c065ca5f2..534854ca5d 100644 --- a/mayan/apps/navigation/classes.py +++ b/mayan/apps/navigation/classes.py @@ -11,7 +11,7 @@ from django.core.exceptions import PermissionDenied from django.core.urlresolvers import resolve, reverse from django.template import VariableDoesNotExist, Variable from django.template.defaulttags import URLNode -from django.utils.encoding import smart_str, smart_unicode +from django.utils.encoding import force_text, smart_str, smart_unicode from django.utils.http import urlencode, urlquote from common.utils import return_attrib @@ -113,9 +113,8 @@ class Menu(object): logger.debug( 'resolved_navigation_object_list: %s', - resolved_navigation_object_list + force_text(resolved_navigation_object_list) ) - return resolved_navigation_object_list def resolve(self, context, source=None): @@ -273,7 +272,7 @@ class Link(object): except VariableDoesNotExist: pass - # If this link has a required permission check that the user have it + # If this link has a required permission check that the user has it # too if self.permissions: if resolved_object: diff --git a/mayan/apps/navigation/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/ar/LC_MESSAGES/django.mo index d83c33c4ca..65bd7a148a 100644 Binary files a/mayan/apps/navigation/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/ar/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/ar/LC_MESSAGES/django.po index 90e3c66bb5..4f59a71548 100644 --- a/mayan/apps/navigation/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/ar/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/" diff --git a/mayan/apps/navigation/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/bg/LC_MESSAGES/django.mo index e6716564af..1930eb51c3 100644 Binary files a/mayan/apps/navigation/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/bg/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/bg/LC_MESSAGES/django.po index 4ed1f660e6..133c854968 100644 --- a/mayan/apps/navigation/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/bg/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/" diff --git a/mayan/apps/navigation/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/bs_BA/LC_MESSAGES/django.mo index c9ab428f67..384dbc5352 100644 Binary files a/mayan/apps/navigation/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/bs_BA/LC_MESSAGES/django.po index eca126c1e4..dd5ff2cdd0 100644 --- a/mayan/apps/navigation/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/bs_BA/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/" diff --git a/mayan/apps/navigation/locale/da/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/da/LC_MESSAGES/django.mo index 43d06ec1e4..7ad79a07d5 100644 Binary files a/mayan/apps/navigation/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/da/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/da/LC_MESSAGES/django.po index 492ce519af..c2c9f5c48e 100644 --- a/mayan/apps/navigation/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/da/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/" diff --git a/mayan/apps/navigation/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/de_DE/LC_MESSAGES/django.mo index 18cd4f8d85..6b9006fa21 100644 Binary files a/mayan/apps/navigation/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/de_DE/LC_MESSAGES/django.po index c8499968d3..6eb3c6e100 100644 --- a/mayan/apps/navigation/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/de_DE/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-" diff --git a/mayan/apps/navigation/locale/en/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/en/LC_MESSAGES/django.mo index 8dde99e136..19d542c5e6 100644 Binary files a/mayan/apps/navigation/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/en/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/en/LC_MESSAGES/django.po index 54e1532594..bd7336d7ce 100644 --- a/mayan/apps/navigation/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2012-12-12 06:06+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" diff --git a/mayan/apps/navigation/locale/es/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/es/LC_MESSAGES/django.mo index cd474a3cf5..18e5bac429 100644 Binary files a/mayan/apps/navigation/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/es/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/es/LC_MESSAGES/django.po index 816e9c1c62..07f9c8aa3e 100644 --- a/mayan/apps/navigation/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/es/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/" diff --git a/mayan/apps/navigation/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/fa/LC_MESSAGES/django.mo index db7c629693..b5c52cd00d 100644 Binary files a/mayan/apps/navigation/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/fa/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/fa/LC_MESSAGES/django.po index 023065c1d0..ae41b5fa5d 100644 --- a/mayan/apps/navigation/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/fa/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/" diff --git a/mayan/apps/navigation/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/fr/LC_MESSAGES/django.mo index 8a1026afce..5b13962a89 100644 Binary files a/mayan/apps/navigation/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/fr/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/fr/LC_MESSAGES/django.po index 66797f1fd8..d3b61dce6f 100644 --- a/mayan/apps/navigation/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/fr/LC_MESSAGES/django.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/" diff --git a/mayan/apps/navigation/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/hu/LC_MESSAGES/django.mo index 7c684f452f..7c55d7df52 100644 Binary files a/mayan/apps/navigation/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/hu/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/hu/LC_MESSAGES/django.po index 4c26fa24b9..e36c8a7559 100644 --- a/mayan/apps/navigation/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/hu/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/" diff --git a/mayan/apps/navigation/locale/id/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/id/LC_MESSAGES/django.mo index 1cda33dd88..9a545a9ef6 100644 Binary files a/mayan/apps/navigation/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/id/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/id/LC_MESSAGES/django.po index 701886ab8a..9b0826b391 100644 --- a/mayan/apps/navigation/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/id/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/" diff --git a/mayan/apps/navigation/locale/it/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/it/LC_MESSAGES/django.mo index af4ed27cf2..7c4391c0f4 100644 Binary files a/mayan/apps/navigation/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/it/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/it/LC_MESSAGES/django.po index cbc196ffd4..4fe0a41779 100644 --- a/mayan/apps/navigation/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/it/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/" diff --git a/mayan/apps/navigation/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/nl_NL/LC_MESSAGES/django.mo index cfe3cc3136..74b256a956 100644 Binary files a/mayan/apps/navigation/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/nl_NL/LC_MESSAGES/django.po index 9de0e5af88..4eb3539b13 100644 --- a/mayan/apps/navigation/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/nl_NL/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-" diff --git a/mayan/apps/navigation/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/pl/LC_MESSAGES/django.mo index eb6c2bd3fe..f2e6cd8fc7 100644 Binary files a/mayan/apps/navigation/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/pl/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/pl/LC_MESSAGES/django.po index 2c703eb33b..93e55ebba9 100644 --- a/mayan/apps/navigation/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/pl/LC_MESSAGES/django.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/" diff --git a/mayan/apps/navigation/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/pt/LC_MESSAGES/django.mo index c4533b7293..ac18ff6ced 100644 Binary files a/mayan/apps/navigation/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/pt/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/pt/LC_MESSAGES/django.po index 2f743c7cba..49ab323d9e 100644 --- a/mayan/apps/navigation/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/pt/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/" diff --git a/mayan/apps/navigation/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/pt_BR/LC_MESSAGES/django.mo index a53203c2e2..6881e69835 100644 Binary files a/mayan/apps/navigation/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/pt_BR/LC_MESSAGES/django.po index 4287d93437..edc53e72c0 100644 --- a/mayan/apps/navigation/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/pt_BR/LC_MESSAGES/django.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-" diff --git a/mayan/apps/navigation/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/ro_RO/LC_MESSAGES/django.mo index c9c921f230..07fbc6f415 100644 Binary files a/mayan/apps/navigation/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/ro_RO/LC_MESSAGES/django.po index 63dac74d94..3bf1e4f7d0 100644 --- a/mayan/apps/navigation/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/ro_RO/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-" diff --git a/mayan/apps/navigation/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/ru/LC_MESSAGES/django.mo index 17ccc21ae0..f02b7e4363 100644 Binary files a/mayan/apps/navigation/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/ru/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/ru/LC_MESSAGES/django.po index ff3317c211..bdb338f31e 100644 --- a/mayan/apps/navigation/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/ru/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/" diff --git a/mayan/apps/navigation/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/sl_SI/LC_MESSAGES/django.mo index cc2463d6d2..731c154eb2 100644 Binary files a/mayan/apps/navigation/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/sl_SI/LC_MESSAGES/django.po index fa7649e64e..16b74281e7 100644 --- a/mayan/apps/navigation/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/sl_SI/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-" diff --git a/mayan/apps/navigation/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/vi_VN/LC_MESSAGES/django.mo index 0dc6a7dcbc..891e6c32ae 100644 Binary files a/mayan/apps/navigation/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/vi_VN/LC_MESSAGES/django.po index 121a78f3f1..d026e72ab4 100644 --- a/mayan/apps/navigation/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/vi_VN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/" diff --git a/mayan/apps/navigation/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/navigation/locale/zh_CN/LC_MESSAGES/django.mo index 36820d5e92..2bd2acd312 100644 Binary files a/mayan/apps/navigation/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/navigation/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/navigation/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/navigation/locale/zh_CN/LC_MESSAGES/django.po index 7d201b248b..15098ae2b3 100644 --- a/mayan/apps/navigation/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/navigation/locale/zh_CN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/" diff --git a/mayan/apps/ocr/api_views.py b/mayan/apps/ocr/api_views.py index ded56e8ed8..c7449d7a50 100644 --- a/mayan/apps/ocr/api_views.py +++ b/mayan/apps/ocr/api_views.py @@ -3,6 +3,8 @@ from __future__ import absolute_import, unicode_literals from rest_framework import generics, status from rest_framework.response import Response +from django.shortcuts import get_object_or_404 + from documents.models import Document, DocumentPage, DocumentVersion from rest_api.permissions import MayanPermission @@ -26,10 +28,6 @@ class APIDocumentOCRView(generics.GenericAPIView): Submit a document for OCR. --- omit_serializer: true - parameters: - - name: pk - paramType: path - type: number responseMessages: - code: 202 message: Accepted @@ -40,12 +38,19 @@ class APIDocumentOCRView(generics.GenericAPIView): class APIDocumentVersionOCRView(generics.GenericAPIView): + lookup_url_kwarg = 'version_pk' mayan_object_permissions = { 'POST': (permission_ocr_document,) } permission_classes = (MayanPermission,) queryset = DocumentVersion.objects.all() + def get_document(self): + return get_object_or_404(Document, pk=self.kwargs['document_pk']) + + def get_queryset(self): + return self.get_document().versions.all() + def get_serializer_class(self): return None @@ -54,10 +59,6 @@ class APIDocumentVersionOCRView(generics.GenericAPIView): Submit a document version for OCR. --- omit_serializer: true - parameters: - - name: pk - paramType: path - type: number responseMessages: - code: 202 message: Accepted @@ -70,20 +71,25 @@ class APIDocumentVersionOCRView(generics.GenericAPIView): class APIDocumentPageContentView(generics.RetrieveAPIView): """ Returns the OCR content of the selected document page. - --- - GET: - parameters: - - name: pk - paramType: path - type: number """ + lookup_url_kwarg = 'page_pk' mayan_object_permissions = { 'GET': (permission_ocr_content_view,), } permission_classes = (MayanPermission,) serializer_class = DocumentPageContentSerializer - queryset = DocumentPage.objects.all() + + def get_document(self): + return get_object_or_404(Document, pk=self.kwargs['document_pk']) + + def get_document_version(self): + return get_object_or_404( + self.get_document().versions.all(), pk=self.kwargs['version_pk'] + ) + + def get_queryset(self): + return self.get_document_version().pages.all() def retrieve(self, request, *args, **kwargs): instance = self.get_object() diff --git a/mayan/apps/ocr/apps.py b/mayan/apps/ocr/apps.py index 97aef9d214..e0e7042552 100644 --- a/mayan/apps/ocr/apps.py +++ b/mayan/apps/ocr/apps.py @@ -48,8 +48,8 @@ def document_version_ocr_submit(self): class OCRApp(MayanAppConfig): + has_tests = True name = 'ocr' - test = True verbose_name = _('OCR') def ready(self): diff --git a/mayan/apps/ocr/backends/pyocr.py b/mayan/apps/ocr/backends/pyocr.py index 78e5ea5a9c..baffdf7d0c 100644 --- a/mayan/apps/ocr/backends/pyocr.py +++ b/mayan/apps/ocr/backends/pyocr.py @@ -16,18 +16,19 @@ class PyOCR(OCRBackendBase): def __init__(self, *args, **kwargs): super(PyOCR, self).__init__(*args, **kwargs) + self.languages = () + tools = pyocr.get_available_tools() if len(tools) == 0: raise OCRError('No OCR tool found') + self.tool = tools[0] + # The tools are returned in the recommended order of usage for tool in tools: if tool.__name__ == 'pyocr.libtesseract': self.tool = tool - if not self.tool: - self.tool = tools[0] - logger.debug('Will use tool \'%s\'', self.tool.get_name()) self.languages = self.tool.get_available_languages() diff --git a/mayan/apps/ocr/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/ar/LC_MESSAGES/django.mo index d33d02381d..5e45595014 100644 Binary files a/mayan/apps/ocr/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/ar/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/ar/LC_MESSAGES/django.po index b0206f7384..226f1ce25e 100644 --- a/mayan/apps/ocr/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/ar/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -19,39 +19,23 @@ msgstr "" "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" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "pdftotext version" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "not found" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "error getting version" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "tesseract version" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -78,7 +62,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "" @@ -131,12 +115,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -153,71 +137,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "File path to poppler's pdftotext program used to extract text from PDF files." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/bg/LC_MESSAGES/django.mo index 4264c34634..28153bf6b6 100644 Binary files a/mayan/apps/ocr/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/bg/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/bg/LC_MESSAGES/django.po index 8271504913..69b913d9a9 100644 --- a/mayan/apps/ocr/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/bg/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -19,39 +19,23 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "не е намерен" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "tesseract версия" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -78,7 +62,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "" @@ -131,12 +115,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -153,71 +137,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "" -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/bs_BA/LC_MESSAGES/django.mo index 21a88cf9c2..065b32c79e 100644 Binary files a/mayan/apps/ocr/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/bs_BA/LC_MESSAGES/django.po index 4e6ec93fad..5331ac11bb 100644 --- a/mayan/apps/ocr/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/bs_BA/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -19,39 +19,23 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "verzija pdftotext" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "nije pronađeno" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "greška pribavljanja verzije" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "verzija tesseract-a" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -78,7 +62,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "" @@ -131,12 +115,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -153,71 +137,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "Staza do popplerovog programa pdftotext za vađenje teksta iz PDF datoteka." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/da/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/da/LC_MESSAGES/django.mo index a921460396..a387e3e0e7 100644 Binary files a/mayan/apps/ocr/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/da/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/da/LC_MESSAGES/django.po index b133f3f72f..195fa2639e 100644 --- a/mayan/apps/ocr/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/da/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -20,39 +20,23 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "pdftotext version" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "Ej fundet" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "Fejl ved versionssøgning" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "Tesseract version" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -79,7 +63,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "" @@ -132,12 +116,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -154,71 +138,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "Fil sti til poppler's pdftotext program, brugt til at identificere tekst fra PDF filer." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/de_DE/LC_MESSAGES/django.mo index e02f73938b..17ca9be9fe 100644 Binary files a/mayan/apps/ocr/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/de_DE/LC_MESSAGES/django.po index 2ebf6dad14..054545c51e 100644 --- a/mayan/apps/ocr/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/de_DE/LC_MESSAGES/django.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-05-20 21:32+0000\n" -"Last-Translator: Tobias Paepke \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,39 +23,23 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR-Schrifterkennung" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "Dokument" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "Hinzugefügt" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "Ergebnis" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "pdftotext Version" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "nicht gefunden" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "Fehler beim Auslesen der Version" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "Tesseract Version" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -82,7 +66,7 @@ msgstr "OCR Einrichtung" msgid "OCR documents per type" msgstr "Texterkennung pro Dokumententyp durchführen" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "OCR Fehler" @@ -135,12 +119,12 @@ msgstr "Seiteninhalt" msgid "Document pages contents" msgstr "Seiteninhalt" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "Ausnahme bei der Verarbeitung einer Seite: %s" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "Programm pdftotext nicht gefunden in %s" @@ -157,71 +141,75 @@ msgstr "Verarbeiteten Text des Dokuments anzeigen" msgid "Change document type OCR settings" msgstr "OCR-Einstellungen für Dokumententyp beabeiten" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "Pfad zum 'tesseract'-Programm" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "Pfad zum \"pdftotext\"-Programm (bereitgestellt von poppler), das benutzt wird, um Text aus PDF-Dateien zu extrahieren." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "Vollständiger Pfad zum Backend, das für die OCR-Schrifterkennung verwendet werden soll." -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "Neue Dokumententypen definieren, für die die OCR-Texterkennung automatisch durchgeführt werden soll." -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "Dokumente in die OCR-Verarbeitung einstellen?" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "%d Dokumente in OCR-Warteschlange eingereiht" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "\"%s\" in die OCR-Warteschlange einreihen?" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "Dokument %(document)s in OCR-Warteschlange eingereiht" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "Ausgewählte Dokumente in die OCR-Warteschlange einreihen?" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "Alle Dokumente eines Typs in die OCR-Verarbeitung einstellen" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "%(count)d Dokumente vom Typ \"%(document_type)s\" in OCR-Warteschlange eingereiht" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "OCR-Einstellungen für Dokumententyp %s bearbeiten" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "Ergebnis der OCR-Texterkennung für Dokument %s" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/en/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/en/LC_MESSAGES/django.mo index 98fbe96d5d..4556dbbc7a 100644 Binary files a/mayan/apps/ocr/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/en/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/en/LC_MESSAGES/django.po index 3fcac13e17..dfae51bcbd 100644 --- a/mayan/apps/ocr/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2012-06-17 22:12+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,43 +18,25 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 #, fuzzy msgid "Document" msgstr "document" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 #, fuzzy msgid "Result" msgstr "result" -#: apps.py:160 apps.py:165 apps.py:170 -#, fuzzy -msgid "pdftotext version" -msgstr "document queues" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "" - -#: apps.py:178 apps.py:183 apps.py:188 -#, fuzzy -msgid "tesseract version" -msgstr "document queues" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -84,7 +66,7 @@ msgstr "" msgid "OCR documents per type" msgstr "document" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 #, fuzzy msgid "OCR errors" msgstr "error" @@ -146,12 +128,12 @@ msgstr "clean up pages content" msgid "Document pages contents" msgstr "Document pages content clean up error: %s" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -168,76 +150,83 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#, fuzzy -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "File path to unpaper program." - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF files." msgstr "" "File path to poppler's pdftotext program used to extract text from PDF files." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #, fuzzy #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "Submit documents for OCR" -#: views.py:40 +#: views.py:38 #, fuzzy, python-format msgid "%d documents added to the OCR queue." msgstr "Document: %(document)s was added to the OCR queue: %(queue)s." -#: views.py:48 +#: views.py:46 #, fuzzy, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "submit to OCR queue" -#: views.py:73 +#: views.py:67 #, fuzzy, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "Document: %(document)s was added to the OCR queue: %(queue)s." -#: views.py:87 +#: views.py:81 #, fuzzy #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "Submit documents for OCR" -#: views.py:94 +#: views.py:88 #, fuzzy #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "Submit documents for OCR" -#: views.py:109 +#: views.py:102 #, fuzzy, python-format msgid "" "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "Document: %(document)s was added to the OCR queue: %(queue)s." -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, fuzzy, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "Queued documents: %d" +#, fuzzy +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#, fuzzy +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#, fuzzy +#~| msgid "File path to unpaper program." +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #, fuzzy #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/es/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/es/LC_MESSAGES/django.mo index f5894d90b9..e77dfa6a33 100644 Binary files a/mayan/apps/ocr/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/es/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/es/LC_MESSAGES/django.po index e415ac73d5..b11e2e357d 100644 --- a/mayan/apps/ocr/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/es/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-23 06:34+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -21,39 +21,23 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "Documento" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "Añadido" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "Resultado" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "versión de pdftotext" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "No encontrado" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "error al obtener la versión" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "Versión de tesseract" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -80,7 +64,7 @@ msgstr "Configurar OCR" msgid "OCR documents per type" msgstr "Realizar OCR por tipo de documento" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "Errores de OCR" @@ -133,12 +117,12 @@ msgstr "Contenido de página de documento" msgid "Document pages contents" msgstr "Contenido de página de documento" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "Error interpretando página: %s " -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "Si no encontró el ejecutable pdftotext en: %s" @@ -155,71 +139,75 @@ msgstr "Ver el texto transcrito de los documentos" msgid "Change document type OCR settings" msgstr "Cambiar opciones OCR por tipo de documento" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "La ruta de archivo del programa tesseract." - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "Ruta de acceso al programa de poppler llamado pdftotext utilizado para extraer texto de archivos PDF." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "Ruta completa a la aplicación que se usará para OCR." -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "Realizar OCR a nuevo tipos de documentos por defecto." -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "¿Enviar todos los documentos para OCR?" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "%d documentos enviados para OCR." -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "¿Enviar \"%s\" para OCR?" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "Documento: %(document)s fue añadido a la lista de espera de OCR" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "¿Enviar los documentos seleccionados para OCR?" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "Enviar todos los documentos de un tipo para OCR" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "%(count)d documentos de tipo \"%(document_type)s\" enviados para OCR." -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "Editar opciones OCR para el tipo de documento: %s" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "Resultados del OCR para documento: %s" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/fa/LC_MESSAGES/django.mo index 30872c763c..cb0b81e67b 100644 Binary files a/mayan/apps/ocr/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/fa/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/fa/LC_MESSAGES/django.po index e5e8354592..883870ef75 100644 --- a/mayan/apps/ocr/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/fa/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -18,39 +18,23 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "سند" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "اضافه شده" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "جواب" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "نسخه تبدیل pdf به text" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "پیدا نشد" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "خطا در تشخیص نسخه" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "نسخه tesseract" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -77,7 +61,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "خطای OCR " @@ -130,12 +114,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -152,71 +136,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "محل فایل POPPLER جهت استخراج TEXT از PDF" -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "محل اجرای نرم افزار OCR" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "سند : %(document)s جهت ocr وارد صف شد." -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/fr/LC_MESSAGES/django.mo index 8da1e81a31..3c9ca01004 100644 Binary files a/mayan/apps/ocr/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/fr/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/fr/LC_MESSAGES/django.po index fd803f0095..e16716513f 100644 --- a/mayan/apps/ocr/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/fr/LC_MESSAGES/django.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-05-23 19:55+0000\n" -"Last-Translator: Bruno CAPELETO \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,39 +23,23 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR - Reconnaissance de caractères" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "Document" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "Ajouté" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "Résultat" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "version de pdftotext" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "non trouvé" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "erreur de récupération de version" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "version de tesseract" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -82,7 +66,7 @@ msgstr "Paramétrage de l'OCR" msgid "OCR documents per type" msgstr "OCR documents par type" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "Erreurs OCR" @@ -135,12 +119,12 @@ msgstr "Contenu de la page du document" msgid "Document pages contents" msgstr "Contenu des pages du document" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "Exception lors de l'analyse de la page : %s" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "Impossible de trouver l'exécutable pdftotext dans : %s" @@ -157,71 +141,75 @@ msgstr "Afficher la transcription du texte depuis le document" msgid "Change document type OCR settings" msgstr "Modifier les paramétrages OCR du type de document" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "Chemin vers l'exécutable tesseract." - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "Chemin vers l'exécutable poppler pdftotext, utilisé pour extraire du texte à partir des fichiers PDF." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "Chemin complet pour l'interface utilisée pour faire de l'OCR" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "Traiter automatiquement les nouveaux types de document par l'OCR." -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "Soumettre tous les documents à l'OCR ?" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "%d documents ajoutés à la file d'attente de l'OCR." -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "Soumettre \"%s\" à la file d'attente OCR ?" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "Le document : %(document)s a été ajouté à la file d'attente OCR." -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "Soumettre les documents sélectionnés à la file d'attente OCR ?" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "Soumettre tous les documents d'un type à l'OCR" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "%(count)d documents de type \"%(document_type)s\" ajoutés à la file d'attente OCR" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "Modifier les paramètres OCR pour le type de document : %s" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "Résultats de l'OCR pour le document: %s" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/hu/LC_MESSAGES/django.mo index 44b43ad1b3..cd44e7bd2a 100644 Binary files a/mayan/apps/ocr/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/hu/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/hu/LC_MESSAGES/django.po index 26322a1865..52bde550b0 100644 --- a/mayan/apps/ocr/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/hu/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -18,39 +18,23 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -77,7 +61,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "" @@ -130,12 +114,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -152,71 +136,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "" -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/id/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/id/LC_MESSAGES/django.mo index c86dfd9383..55d22b4227 100644 Binary files a/mayan/apps/ocr/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/id/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/id/LC_MESSAGES/django.po index 63c65aae45..5702ae9677 100644 --- a/mayan/apps/ocr/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,39 +18,23 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -77,7 +61,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "" @@ -130,12 +114,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -152,71 +136,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "" -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/it/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/it/LC_MESSAGES/django.mo index 9ca1c5e76d..f5014057fa 100644 Binary files a/mayan/apps/ocr/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/it/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/it/LC_MESSAGES/django.po index d2dec0e5e8..e4ee091ea8 100644 --- a/mayan/apps/ocr/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/it/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-09-24 10:33+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,39 +20,23 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "Documento" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "Aggiunto" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "Risultato" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "versione pdftotext" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "non trovato" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "errore recupero versione" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "versione tesseract" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -79,7 +63,7 @@ msgstr "Configura OCR" msgid "OCR documents per type" msgstr "OCR per tipo documento" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "Errori OCR" @@ -132,12 +116,12 @@ msgstr "Contenuto pagina del documento" msgid "Document pages contents" msgstr "Contenuti pagine documento" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "Eccezione durante il parsing della pagina: %s" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "Non trovo l'eseguibile pdftotext in: %s" @@ -154,71 +138,75 @@ msgstr "Vedi il testo trascritto dal documento" msgid "Change document type OCR settings" msgstr "Cambia impostazioni OCR per tipo documento " -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "Percorso del programma tesseract." - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "Percorso del programma poppler pdftotext.usato per estrarre il testo dai file PDF." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "Percorso completo al backend utilizzato per eseguire l'OCR." -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "Imposta i nuovi tipi documento per eseguire automaticamente l'OCR per default." -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "Inviare tutti i documenti per l'OCR?" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "%d documenti aggiunti alla coda OCR." -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "Inviare \"%s\" alla coda OCR?" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "Documento: %(document)s è stato aggiunto alla coda OCR.." -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "Inviare i documenti selezionati alla coda OCR?" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "Invia tutti i documenti del tipo alla coda OCR" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "%(count)d documenti di tipo \"%(document_type)s\" aggiunti alla coda OCR." -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "Modifica le impostazioni OCR per il tipo documento: %s" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "Risultati OCR per il documento: %s" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/nl_NL/LC_MESSAGES/django.mo index a439c27e41..eff4000025 100644 Binary files a/mayan/apps/ocr/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/nl_NL/LC_MESSAGES/django.po index 942a2120c8..d205d31a01 100644 --- a/mayan/apps/ocr/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/nl_NL/LC_MESSAGES/django.po @@ -5,14 +5,15 @@ # Translators: # Translators: # Evelijn Saaltink , 2016 +# Johan Braeken, 2017 # Lucas Weel , 2012 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-01 09:05+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,39 +21,23 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "Document" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "Toegevoegd" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "Resultaat" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "niet gevonden" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "fout bij het ophalen van de versie" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -79,7 +64,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "OCR-fouten" @@ -105,7 +90,7 @@ msgstr "Documentversie" #: models.py:34 msgid "Date time submitted" -msgstr "" +msgstr "Indientijdstip" #: models.py:43 msgid "Document Version OCR Error" @@ -132,12 +117,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -154,71 +139,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "Bestandspad naar 'poppler's' pdftotext programma voor het extraheren van PDF files." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/pl/LC_MESSAGES/django.mo index e08822a63b..987c3dba1b 100644 Binary files a/mayan/apps/ocr/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/pl/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/pl/LC_MESSAGES/django.po index 0976e91217..66b921d74b 100644 --- a/mayan/apps/ocr/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/pl/LC_MESSAGES/django.po @@ -10,49 +10,33 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-22 07:14+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "Dokument" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "Dodano" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "Wynik" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "wersja pdftotext" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "nie znaleziono" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "błąd pobierania wersji" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -79,7 +63,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "Błędy OCR" @@ -132,12 +116,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -154,71 +138,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "" -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "Dokument : %(document)s dodany do kolejki OCR" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" @@ -242,6 +230,7 @@ msgstr "" #~ msgstr[0] "c3d93a17e46abf97b0d29fdf9a0bf689_pl_0" #~ msgstr[1] "c3d93a17e46abf97b0d29fdf9a0bf689_pl_1" #~ msgstr[2] "c3d93a17e46abf97b0d29fdf9a0bf689_pl_2" +#~ msgstr[3] "c3d93a17e46abf97b0d29fdf9a0bf689_pl_3" #~ msgid "Entry: %(entry)s was re-queued for OCR." #~ msgstr "Document: %(document)s is already queued." @@ -254,6 +243,7 @@ msgstr "" #~ msgstr[0] "3d821f1679e8cdd3b5844ba5a01a969b_pl_0" #~ msgstr[1] "3d821f1679e8cdd3b5844ba5a01a969b_pl_1" #~ msgstr[2] "3d821f1679e8cdd3b5844ba5a01a969b_pl_2" +#~ msgstr[3] "3d821f1679e8cdd3b5844ba5a01a969b_pl_3" #~ msgid "Submit the selected document for OCR?" #~ msgstr "Submit documents for OCR" diff --git a/mayan/apps/ocr/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/pt/LC_MESSAGES/django.mo index a6ee611114..cc9563be86 100644 Binary files a/mayan/apps/ocr/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/pt/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/pt/LC_MESSAGES/django.po index f627db3c80..91c1f64655 100644 --- a/mayan/apps/ocr/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/pt/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -21,39 +21,23 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "Versão de pdttotex" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "não encontrado" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "Versão de tesseract" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -80,7 +64,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "" @@ -133,12 +117,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -155,71 +139,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "Caminho para o programa pdftotext de poppler, usado para extrair texto de ficheiros PDF." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/pt_BR/LC_MESSAGES/django.mo index dc5993cdb8..ee4db4d9ab 100644 Binary files a/mayan/apps/ocr/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/pt_BR/LC_MESSAGES/django.po index 7f235b14eb..b87572a9ec 100644 --- a/mayan/apps/ocr/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/pt_BR/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-17 22:54+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,39 +21,23 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "Enviar para a fila de OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "Documento" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "adicionado" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "resultado" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "Versão do pdftotext" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "Não encontrada" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "Erro ao receber a versão." - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "Versão do tesseract" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -80,7 +64,7 @@ msgstr "Configurar OCR" msgid "OCR documents per type" msgstr "Realizar OCR de documentos por tipo" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "Erros de OCR" @@ -133,12 +117,12 @@ msgstr "Conteúdo de página de documento" msgid "Document pages contents" msgstr "Conteúdo de páginas de documento" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "Erro interpretando página; %s" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "Executável pdftotext não foi encontrado em: %s" @@ -155,71 +139,75 @@ msgstr "Ver o texto transcrito dos documentos" msgid "Change document type OCR settings" msgstr "Alterar configurações de OCR para tipo de documento" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "Caminho de acesso para o programa tesseract" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "Caminho para o programa poppler pdftotext usado para extrair texto de arquivos PDF." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "Caminho completo para o servidor a ser usado para fazer OCR." -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "Definir novos tipos de documentos para realizar OCR automaticamente" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "Enviar todos os documentos para OCR?" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "%d documentos enviados para OCR." -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "Enviar \"%s\" para OCR?" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "Documento: %(document)s foi adicionado à fila de OCR." -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "Enviar os documentos selecionados para OCR?" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "Enviar todos os documentos do tipo para OCR" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "%(count)d documentos do tipo \"%(document_type)s\" enviados para OCR." -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "Editar configurações de OCR para documento de tipo: %s" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "Resultados de OCR para documento: %s" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/ro_RO/LC_MESSAGES/django.mo index b9eb15eec2..ac6cdd3810 100644 Binary files a/mayan/apps/ocr/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/ro_RO/LC_MESSAGES/django.po index 542997cb74..e1abc0e05e 100644 --- a/mayan/apps/ocr/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/ro_RO/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-04-17 13:17+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -19,39 +19,23 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "pdftotext versiune" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "nu a fost găsit" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "eroare la obținerea versiune" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "Tesseract versiune" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -78,7 +62,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "" @@ -131,12 +115,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -153,71 +137,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "Calea de fișier pentru programul pdftotext folosit pentru a extrage textul din fișiere PDF." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/ru/LC_MESSAGES/django.mo index 49e7ec9354..46a10c5ae4 100644 Binary files a/mayan/apps/ocr/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/ru/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/ru/LC_MESSAGES/django.po index 858dd949f5..7208d9e24e 100644 --- a/mayan/apps/ocr/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/ru/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-07-13 21:33+0000\n" -"Last-Translator: lilo.panic\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,39 +19,23 @@ msgstr "" "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" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "Распознавание текста" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "Документ" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "Добавлено" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "Результат" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "версия pdftotext" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "не найдено" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "Ошибка при получении версии" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "tesseract version" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -78,7 +62,7 @@ msgstr "Настройки распознавания" msgid "OCR documents per type" msgstr "Распознавание документов с определенным типом" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "Ошибки распознавания" @@ -131,12 +115,12 @@ msgstr "Содержимое страницы документа" msgid "Document pages contents" msgstr "Содержимое страниц документа" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "Ошибка при чтении страницы; %s" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "Не удаётся найти исполняемый файл pdftotext: %s" @@ -153,71 +137,75 @@ msgstr "Просмотр распознанного текста докумен msgid "Change document type OCR settings" msgstr "Изменить настройки распознавания документа" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "Путь до программы tesseract." - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "Путь к файлу программы pdftotext Poppler, используемой для извлечения текста из PDF файлов." -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "Полный путь до бекенда, выполняющего OCR." -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "Задать новые типы документов для которых распознавание будет запускаться по умолчанию. " -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "Отправить все документы на распознавание?" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "%d документов помещено в очередь распознавания." -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "Отправить \"%s\" в очередь распознавания?" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "Документ: %(document)s добавлен в очередь распознавания." -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "Отправить выделенные документы в очедерь распознавания?" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "Отправить все документы определённого типа на распознавание" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "%(count)d документов с типом \"%(document_type)s\" помещены в очередь распознавания." -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "Редактировать настройки распознавания для типа документов: %s" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "Результат распозанвания для документа: %s" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/sl_SI/LC_MESSAGES/django.mo index e35991b20c..23fb686ea0 100644 Binary files a/mayan/apps/ocr/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/sl_SI/LC_MESSAGES/django.po index 5f2edb3248..6ccb7fe16a 100644 --- a/mayan/apps/ocr/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-23 16:43+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,39 +18,23 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "" -#: apps.py:91 +#: apps.py:86 msgid "Document" -msgstr "" +msgstr "Dokument" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -77,7 +61,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "" @@ -130,12 +114,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -152,71 +136,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "" -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/vi_VN/LC_MESSAGES/django.mo index 670680549f..2211206a3a 100644 Binary files a/mayan/apps/ocr/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/vi_VN/LC_MESSAGES/django.po index e112f9d5e1..cd80744cb1 100644 --- a/mayan/apps/ocr/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/vi_VN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -19,39 +19,23 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "OCR" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -78,7 +62,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "" @@ -131,12 +115,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -153,71 +137,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "" -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/ocr/locale/zh_CN/LC_MESSAGES/django.mo index 922e7f38d7..0ba1099229 100644 Binary files a/mayan/apps/ocr/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/ocr/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/ocr/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/ocr/locale/zh_CN/LC_MESSAGES/django.po index 0f89ee503c..79bf59052f 100644 --- a/mayan/apps/ocr/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/ocr/locale/zh_CN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -19,39 +19,23 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:58 apps.py:116 apps.py:154 links.py:14 permissions.py:7 +#: apps.py:53 apps.py:111 apps.py:115 links.py:14 permissions.py:7 #: settings.py:7 msgid "OCR" msgstr "扫描输入" -#: apps.py:91 +#: apps.py:86 msgid "Document" msgstr "" -#: apps.py:95 +#: apps.py:90 msgid "Added" msgstr "" -#: apps.py:99 models.py:36 +#: apps.py:94 models.py:36 msgid "Result" msgstr "" -#: apps.py:160 apps.py:165 apps.py:170 -msgid "pdftotext version" -msgstr "pdftotext版本" - -#: apps.py:160 apps.py:178 -msgid "not found" -msgstr "未发现" - -#: apps.py:166 apps.py:184 -msgid "error getting version" -msgstr "获取版本出错" - -#: apps.py:178 apps.py:183 apps.py:188 -msgid "tesseract version" -msgstr "tesseract版本" - #: forms.py:40 #, python-format msgid "Page %(page_number)d" @@ -78,7 +62,7 @@ msgstr "" msgid "OCR documents per type" msgstr "" -#: links.py:37 views.py:161 +#: links.py:37 views.py:154 msgid "OCR errors" msgstr "" @@ -131,12 +115,12 @@ msgstr "" msgid "Document pages contents" msgstr "" -#: parsers.py:102 +#: parsers.py:101 #, python-format msgid "Exception parsing page; %s" msgstr "" -#: parsers.py:129 +#: parsers.py:128 #, python-format msgid "Cannot find pdftotext executable at: %s" msgstr "" @@ -153,71 +137,75 @@ msgstr "" msgid "Change document type OCR settings" msgstr "" -#: settings.py:10 -#| msgid "File path to unpaper program." -msgid "File path to tesseract program." -msgstr "" - -#: settings.py:15 +#: settings.py:12 msgid "" "File path to poppler's pdftotext program used to extract text from PDF " "files." msgstr "程序pdftotext文件路径,用以从PDF文件中提取文本。" -#: settings.py:22 +#: settings.py:19 msgid "Full path to the backend to be used to do OCR." msgstr "用于执行OCR后台应用的全路径。" -#: settings.py:27 +#: settings.py:24 msgid "Set new document types to perform OCR automatically by default." msgstr "" -#: views.py:28 +#: views.py:26 #| msgid "Submit documents for OCR" msgid "Submit all documents for OCR?" msgstr "" -#: views.py:40 +#: views.py:38 #, python-format msgid "%d documents added to the OCR queue." msgstr "" -#: views.py:48 +#: views.py:46 #, python-format msgid "Submit \"%s\" to the OCR queue?" msgstr "" -#: views.py:73 +#: views.py:67 #, python-format msgid "Document: %(document)s was added to the OCR queue." msgstr "" -#: views.py:87 +#: views.py:81 #| msgid "Submit documents for OCR" msgid "Submit the selected documents to the OCR queue?" msgstr "" -#: views.py:94 +#: views.py:88 #| msgid "Submit documents for OCR" msgid "Submit all documents of a type for OCR" msgstr "" -#: views.py:109 +#: views.py:102 #, python-format msgid "%(count)d documents of type \"%(document_type)s\" added to the OCR queue." msgstr "" -#: views.py:132 +#: views.py:125 #, python-format msgid "Edit OCR settings for document type: %s" msgstr "" -#: views.py:154 +#: views.py:147 #, python-format #| msgid "Queued documents: %d" msgid "OCR result for document: %s" msgstr "" +#~ msgid "pdftotext version" +#~ msgstr "document queues" + +#~ msgid "tesseract version" +#~ msgstr "document queues" + +#~ msgid "File path to tesseract program." +#~ msgstr "File path to unpaper program." + #~ msgid "Delete" #~ msgstr "delete" diff --git a/mayan/apps/ocr/tests/test_api.py b/mayan/apps/ocr/tests/test_api.py index 1194a76748..bb6619d0c9 100644 --- a/mayan/apps/ocr/tests/test_api.py +++ b/mayan/apps/ocr/tests/test_api.py @@ -6,21 +6,23 @@ from django.contrib.auth import get_user_model from django.core.urlresolvers import reverse from rest_framework import status -from rest_framework.test import APITestCase from documents.models import DocumentType from documents.tests import TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +from rest_api.tests import BaseAPITestCase from user_management.tests import ( TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME ) -class OCRAPITestCase(APITestCase): +class OCRAPITestCase(BaseAPITestCase): """ Test the OCR app API endpoints """ def setUp(self): + super(OCRAPITestCase, self).setUp() + self.admin_user = get_user_model().objects.create_superuser( username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD @@ -41,6 +43,7 @@ class OCRAPITestCase(APITestCase): def tearDown(self): self.document_type.delete() + super(OCRAPITestCase, self).tearDown() def test_submit_document(self): response = self.client.post( @@ -60,7 +63,9 @@ class OCRAPITestCase(APITestCase): response = self.client.post( reverse( 'rest_api:document-version-ocr-submit-view', - args=(self.document.latest_version.pk,) + args=( + self.document.pk, self.document.latest_version.pk, + ) ) ) @@ -74,7 +79,10 @@ class OCRAPITestCase(APITestCase): response = self.client.get( reverse( 'rest_api:document-page-content-view', - args=(self.document.latest_version.pages.first().pk,) + args=( + self.document.pk, self.document.latest_version.pk, + self.document.latest_version.pages.first().pk, + ) ), ) diff --git a/mayan/apps/ocr/tests/test_parsers.py b/mayan/apps/ocr/tests/test_parsers.py index d222711167..e846ff5271 100644 --- a/mayan/apps/ocr/tests/test_parsers.py +++ b/mayan/apps/ocr/tests/test_parsers.py @@ -52,6 +52,8 @@ class ParserTestCase(BaseTestCase): @override_settings(OCR_AUTO_OCR=False) class TextExtractorTestCase(BaseTestCase): def setUp(self): + super(TextExtractorTestCase, self).setUp() + self.document_type = DocumentType.objects.create( label=TEST_DOCUMENT_TYPE ) @@ -63,6 +65,7 @@ class TextExtractorTestCase(BaseTestCase): def tearDown(self): self.document_type.delete() + super(TextExtractorTestCase, self).tearDown() def test_text_extractor(self): TextExtractor.process_document_version( diff --git a/mayan/apps/ocr/urls.py b/mayan/apps/ocr/urls.py index a96060f904..8e31b8cc1f 100644 --- a/mayan/apps/ocr/urls.py +++ b/mayan/apps/ocr/urls.py @@ -43,16 +43,16 @@ urlpatterns = [ api_urls = [ url( - r'^document/(?P\d+)/submit/$', APIDocumentOCRView.as_view(), + r'^documents/(?P\d+)/ocr/$', APIDocumentOCRView.as_view(), name='document-ocr-submit-view' ), url( - r'^document_version/(?P\d+)/submit/$', + r'^documents/(?P\d+)/versions/(?P\d+)/ocr/$', APIDocumentVersionOCRView.as_view(), name='document-version-ocr-submit-view' ), url( - r'^page/(?P\d+)/content/$', APIDocumentPageContentView.as_view(), + r'^documents/(?P\d+)/versions/(?P\d+)/pages/(?P\d+)/ocr/$', APIDocumentPageContentView.as_view(), name='document-page-content-view' ), ] diff --git a/mayan/apps/permissions/api_views.py b/mayan/apps/permissions/api_views.py index 47f2ea7c48..c6777bc76c 100644 --- a/mayan/apps/permissions/api_views.py +++ b/mayan/apps/permissions/api_views.py @@ -1,14 +1,9 @@ from __future__ import unicode_literals -from django.shortcuts import get_object_or_404 - from rest_framework import generics -from acls.models import AccessControlList from rest_api.filters import MayanObjectPermissionsFilter from rest_api.permissions import MayanPermission -from user_management.permissions import permission_group_view -from user_management.serializers import GroupSerializer from .classes import Permission from .models import Role @@ -61,54 +56,6 @@ class APIRoleListView(generics.ListCreateAPIView): return super(APIRoleListView, self).post(*args, **kwargs) -class APIRolePermissionList(generics.ListCreateAPIView): - """ - Returns a list of all the permissions of a role. - """ - - mayan_object_permissions = { - 'GET': (permission_role_view,), - 'POST': (permission_role_edit,) - } - permission_classes = (MayanPermission,) - - def get_serializer_class(self): - if self.request.method == 'GET': - return PermissionSerializer - elif self.request.method == 'POST': - return RoleNewPermissionSerializer - - def get_serializer_context(self): - """ - Extra context provided to the serializer class. - """ - return { - 'format': self.format_kwarg, - 'request': self.request, - 'role': self.get_role(), - 'view': self - } - - def get_queryset(self): - return [ - permission.volatile_permission for permission in self.get_role().permissions.all() - ] - - def get_role(self): - return get_object_or_404(Role, pk=self.kwargs['pk']) - - def perform_create(self, serializer): - serializer.save(role=self.get_role()) - - def post(self, request, *args, **kwargs): - """ - Add a list of permissions to a role. - """ - return super(APIRolePermissionList, self).post( - request, *args, **kwargs - ) - - class APIRoleView(generics.RetrieveUpdateDestroyAPIView): mayan_object_permissions = { 'GET': (permission_role_view,), diff --git a/mayan/apps/permissions/apps.py b/mayan/apps/permissions/apps.py index 9cc06178c1..2547e0aaf6 100644 --- a/mayan/apps/permissions/apps.py +++ b/mayan/apps/permissions/apps.py @@ -17,8 +17,8 @@ from .links import ( class PermissionsApp(MayanAppConfig): + has_tests = True name = 'permissions' - test = True verbose_name = _('Permissions') def ready(self): diff --git a/mayan/apps/permissions/classes.py b/mayan/apps/permissions/classes.py index 2eb6031dec..32cf056d67 100644 --- a/mayan/apps/permissions/classes.py +++ b/mayan/apps/permissions/classes.py @@ -66,8 +66,9 @@ class Permission(object): if permissions.stored_permission.requester_has_this(requester): return True - logger.debug('no permission') - + logger.debug('User "%s" does not have permissions "%s"', + requester, + permissions) raise PermissionDenied(_('Insufficient permissions.')) @classmethod diff --git a/mayan/apps/permissions/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/ar/LC_MESSAGES/django.mo index 5643d71d86..3bab9c4616 100644 Binary files a/mayan/apps/permissions/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/ar/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/ar/LC_MESSAGES/django.po index 0d4107d58e..b47dbe4ad1 100644 --- a/mayan/apps/permissions/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/ar/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:03+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -19,11 +19,11 @@ msgstr "" "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" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "الصلاحيات" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "صلاحيات غير كافية." @@ -47,7 +47,7 @@ msgstr "" msgid "Edit" msgstr "تحرير" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Roles" @@ -59,27 +59,27 @@ msgstr "" msgid "Role permissions" msgstr "" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "اسم" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "مجموعات" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "" @@ -107,6 +107,21 @@ msgstr "منح الصلاحيات" msgid "Revoke permissions" msgstr "إبطال الصلاحيات" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "" diff --git a/mayan/apps/permissions/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/bg/LC_MESSAGES/django.mo index a26fbb3a04..2598e7ddab 100644 Binary files a/mayan/apps/permissions/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/bg/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/bg/LC_MESSAGES/django.po index 7bfa05a31b..506bdc4afc 100644 --- a/mayan/apps/permissions/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/bg/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-06-13 13:45+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -19,11 +19,11 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Разрешения" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Недостатъчни разрешения." @@ -47,7 +47,7 @@ msgstr "" msgid "Edit" msgstr "Редактиране" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Роли" @@ -59,27 +59,27 @@ msgstr "" msgid "Role permissions" msgstr "" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Име" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "Разрешение" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Групи" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "" @@ -107,6 +107,21 @@ msgstr "Издаване на разрешения" msgid "Revoke permissions" msgstr "Отмяна на разрешения" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "" diff --git a/mayan/apps/permissions/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/bs_BA/LC_MESSAGES/django.mo index 1bda6dbd5b..9e60248f27 100644 Binary files a/mayan/apps/permissions/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/bs_BA/LC_MESSAGES/django.po index 54108716e4..ed2ab4600a 100644 --- a/mayan/apps/permissions/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/bs_BA/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:03+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -19,11 +19,11 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Dozvole" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Nedovoljne dozvole." @@ -47,7 +47,7 @@ msgstr "" msgid "Edit" msgstr "Urediti" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Role" @@ -59,27 +59,27 @@ msgstr "" msgid "Role permissions" msgstr "" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Ime" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Grupe" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "" @@ -107,6 +107,21 @@ msgstr "Odobri dozvole" msgid "Revoke permissions" msgstr "Ukini dozvole" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "" diff --git a/mayan/apps/permissions/locale/da/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/da/LC_MESSAGES/django.mo index f36971500f..97b61a5453 100644 Binary files a/mayan/apps/permissions/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/da/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/da/LC_MESSAGES/django.po index 1b2106a20e..b618de667e 100644 --- a/mayan/apps/permissions/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/da/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:03+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -18,11 +18,11 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "" @@ -46,7 +46,7 @@ msgstr "" msgid "Edit" msgstr "" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "" @@ -58,27 +58,27 @@ msgstr "" msgid "Role permissions" msgstr "" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Navn" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "" @@ -106,6 +106,21 @@ msgstr "" msgid "Revoke permissions" msgstr "" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "" diff --git a/mayan/apps/permissions/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/de_DE/LC_MESSAGES/django.mo index 973c850551..5c876834d4 100644 Binary files a/mayan/apps/permissions/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/de_DE/LC_MESSAGES/django.po index 1ff5bc00e7..580b85b6cd 100644 --- a/mayan/apps/permissions/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/de_DE/LC_MESSAGES/django.po @@ -5,15 +5,16 @@ # Translators: # Translators: # Berny , 2015 +# Jesaja Everling , 2017 # Mathias Behrle , 2014 # tetjarediske , 2012 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:03+0000\n" -"Last-Translator: Mathias Behrle \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-24 23:14+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,11 +22,11 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Berechtigungen" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Unzureichende Berechtigungen" @@ -49,7 +50,7 @@ msgstr "Löschen" msgid "Edit" msgstr "Bearbeiten" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Rollen" @@ -61,27 +62,27 @@ msgstr "Mitglieder" msgid "Role permissions" msgstr "Berechtigungen" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "Namensraum" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Name" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "Berechtigung" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "Bezeichnung" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Gruppen" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "Rolle" @@ -109,6 +110,21 @@ msgstr "Berechtigungen gewähren" msgid "Revoke permissions" msgstr "Berechtigungen widerrufen" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "Komma getrennte Liste der Primary Keys der Gruppen die zu dieser Rolle hinzugefügt oder ersetzt werden sollen." + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "Keine solche Berechtigung: %s" + #: views.py:45 msgid "Available groups" msgstr "Verfügbare Gruppen" diff --git a/mayan/apps/permissions/locale/en/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/en/LC_MESSAGES/django.mo index 09cc32a000..4aca996427 100644 Binary files a/mayan/apps/permissions/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/en/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/en/LC_MESSAGES/django.po index f62e6c72fb..f2e5188106 100644 --- a/mayan/apps/permissions/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2012-02-02 18:18+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,11 +18,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Permissions" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Insufficient permissions." @@ -48,7 +48,7 @@ msgstr "delete" msgid "Edit" msgstr "" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 #, fuzzy msgid "Roles" msgstr "roles" @@ -63,30 +63,30 @@ msgstr "members" msgid "Role permissions" msgstr "role permissions" -#: models.py:18 +#: models.py:19 #, fuzzy msgid "Namespace" msgstr "namespace" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "" -#: models.py:46 +#: models.py:45 #, fuzzy msgid "Permission" msgstr "Permissions" -#: models.py:67 +#: models.py:74 #, fuzzy msgid "Label" msgstr "label" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Groups" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "" @@ -114,6 +114,21 @@ msgstr "Grant permissions" msgid "Revoke permissions" msgstr "Revoke permissions" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, fuzzy, python-format +msgid "No such permission: %s" +msgstr "role permissions" + #: views.py:45 msgid "Available groups" msgstr "" diff --git a/mayan/apps/permissions/locale/es/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/es/LC_MESSAGES/django.mo index 165c15ebb3..a5ae160b72 100644 Binary files a/mayan/apps/permissions/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/es/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/es/LC_MESSAGES/django.po index 860f19069c..1e64493029 100644 --- a/mayan/apps/permissions/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/es/LC_MESSAGES/django.po @@ -6,13 +6,13 @@ # Translators: # jmcainzos , 2014 # Lory977 , 2015 -# Roberto Rosario, 2015-2016 +# Roberto Rosario, 2015-2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-23 06:40+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-23 03:03+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -21,11 +21,11 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Permisos" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Permisos insuficientes." @@ -49,7 +49,7 @@ msgstr "Borrar" msgid "Edit" msgstr "Editar" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Roles" @@ -61,27 +61,27 @@ msgstr "Miembros" msgid "Role permissions" msgstr "Autorizaciones por rol" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "Espacio nombrado" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Nombre" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "Permiso" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "Etiqueta" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Grupos" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "Rol" @@ -109,6 +109,21 @@ msgstr "Conceder permisos" msgid "Revoke permissions" msgstr "Revocar permisos" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "No existe el permiso: %s" + #: views.py:45 msgid "Available groups" msgstr "Grupos disponibles" diff --git a/mayan/apps/permissions/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/fa/LC_MESSAGES/django.mo index 0d18520194..f66a541064 100644 Binary files a/mayan/apps/permissions/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/fa/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/fa/LC_MESSAGES/django.po index 390ff7b3c3..c2aafa1549 100644 --- a/mayan/apps/permissions/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/fa/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:03+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -20,11 +20,11 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "مجوزها" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "اجازه ناکافی" @@ -48,7 +48,7 @@ msgstr "حذف" msgid "Edit" msgstr "ویرایش" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "نقش ها" @@ -60,27 +60,27 @@ msgstr "اعضا" msgid "Role permissions" msgstr "مجوزهای نقش" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "فضای نام" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "نام" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "مجوز" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "برچسب" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "گروه‌ها" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "نقش" @@ -108,6 +108,21 @@ msgstr "دادن مجوز" msgid "Revoke permissions" msgstr "لغو مجوز" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "" diff --git a/mayan/apps/permissions/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/fr/LC_MESSAGES/django.mo index 55a3d2737b..38c0f76d3a 100644 Binary files a/mayan/apps/permissions/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/fr/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/fr/LC_MESSAGES/django.po index d5bc7867c6..e39a67ea37 100644 --- a/mayan/apps/permissions/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/fr/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:03+0000\n" -"Last-Translator: Thierry Schott \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,11 +21,11 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Droits" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Droits insuffisants" @@ -49,7 +49,7 @@ msgstr "Supprimer" msgid "Edit" msgstr "Modifier" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Rôles" @@ -61,27 +61,27 @@ msgstr "Membres" msgid "Role permissions" msgstr "Autorisations du rôle" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "Espace de nommage" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Nom" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "Autorisation" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "Étiquette" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Groupes" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "Rôle" @@ -109,6 +109,21 @@ msgstr "Donner des droits" msgid "Revoke permissions" msgstr "Retirer des droits" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "Groupes disponibles" diff --git a/mayan/apps/permissions/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/hu/LC_MESSAGES/django.mo index c51f4d7e48..4144046e02 100644 Binary files a/mayan/apps/permissions/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/hu/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/hu/LC_MESSAGES/django.po index 08650b0d58..10e6417072 100644 --- a/mayan/apps/permissions/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/hu/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-24 05:21+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -18,11 +18,11 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "" @@ -46,7 +46,7 @@ msgstr "" msgid "Edit" msgstr "" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "" @@ -58,27 +58,27 @@ msgstr "" msgid "Role permissions" msgstr "" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "" @@ -106,6 +106,21 @@ msgstr "" msgid "Revoke permissions" msgstr "" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "" diff --git a/mayan/apps/permissions/locale/id/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/id/LC_MESSAGES/django.mo index db3d647001..ffa0196af0 100644 Binary files a/mayan/apps/permissions/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/id/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/id/LC_MESSAGES/django.po index 3306082a3a..e1988c6f21 100644 --- a/mayan/apps/permissions/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-24 05:21+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,11 +18,11 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "" @@ -46,7 +46,7 @@ msgstr "" msgid "Edit" msgstr "" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "" @@ -58,27 +58,27 @@ msgstr "" msgid "Role permissions" msgstr "" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "" @@ -106,6 +106,21 @@ msgstr "" msgid "Revoke permissions" msgstr "" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "" diff --git a/mayan/apps/permissions/locale/it/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/it/LC_MESSAGES/django.mo index f2b5e96d66..130cd574b0 100644 Binary files a/mayan/apps/permissions/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/it/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/it/LC_MESSAGES/django.po index 96c545f732..b064c7ce51 100644 --- a/mayan/apps/permissions/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/it/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-09-24 10:09+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,11 +20,11 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Permessi" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Permessi insufficienti" @@ -48,7 +48,7 @@ msgstr "Cancella " msgid "Edit" msgstr "Modifica " -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Ruoli " @@ -60,27 +60,27 @@ msgstr "Membri " msgid "Role permissions" msgstr "Autorizzazioni ruolo " -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "Namespace" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Nome " -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "Autorizzazione " -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "Etichetta " -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Gruppi" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "Ruolo" @@ -108,6 +108,21 @@ msgstr "Concedere le autorizzazioni" msgid "Revoke permissions" msgstr "Revoca le autorizzazioni" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "Gruppi disponibili " diff --git a/mayan/apps/permissions/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/nl_NL/LC_MESSAGES/django.mo index 352d591f41..b9e015460e 100644 Binary files a/mayan/apps/permissions/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/nl_NL/LC_MESSAGES/django.po index 99ea11a0f2..b00f751466 100644 --- a/mayan/apps/permissions/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/nl_NL/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-10-28 12:44+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,11 +20,11 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Permissies" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Permissies zijn ontoereikend" @@ -48,7 +48,7 @@ msgstr "Verwijder" msgid "Edit" msgstr "bewerken" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "gebruikersrollen" @@ -60,27 +60,27 @@ msgstr "Leden" msgid "Role permissions" msgstr "Permissies gebruikersro" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "Namespace" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Naam" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "Permissies" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "Label" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Groepen" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "Gebruikersrol" @@ -108,6 +108,21 @@ msgstr "permissies toestaan" msgid "Revoke permissions" msgstr "permissies intrekken" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "Beschikbare groepen" diff --git a/mayan/apps/permissions/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/pl/LC_MESSAGES/django.mo index c382d23f18..517e9bc87c 100644 Binary files a/mayan/apps/permissions/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/pl/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/pl/LC_MESSAGES/django.po index 773fb3e624..3eed924b1b 100644 --- a/mayan/apps/permissions/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/pl/LC_MESSAGES/django.po @@ -9,21 +9,21 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-08-04 09:54+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Uprawnienia" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Niewystarczające uprawnienia." @@ -47,7 +47,7 @@ msgstr "Usunąć" msgid "Edit" msgstr "Edytuj" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Role" @@ -59,27 +59,27 @@ msgstr "Członkowie" msgid "Role permissions" msgstr "" -#: models.py:18 -msgid "Namespace" -msgstr "" - #: models.py:19 +msgid "Namespace" +msgstr "Przestrzeń nazw" + +#: models.py:20 msgid "Name" msgstr "Nazwa" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "Uprawnienia" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "Etykieta" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Grupy" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "Rola" @@ -107,6 +107,21 @@ msgstr "Grant uprawnienia" msgid "Revoke permissions" msgstr "" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "Dostępne grupy" diff --git a/mayan/apps/permissions/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/pt/LC_MESSAGES/django.mo index c301a8a7f6..e1bf14c633 100644 Binary files a/mayan/apps/permissions/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/pt/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/pt/LC_MESSAGES/django.po index d31394dbd0..21600b0c18 100644 --- a/mayan/apps/permissions/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/pt/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:03+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -21,11 +21,11 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Permissões" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Permissões insuficientes." @@ -49,7 +49,7 @@ msgstr "Eliminar" msgid "Edit" msgstr "Editar" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Funções" @@ -61,27 +61,27 @@ msgstr "Membros" msgid "Role permissions" msgstr "" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Nome" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "Nome" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Grupos" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "" @@ -109,6 +109,21 @@ msgstr "Conceder permissões" msgid "Revoke permissions" msgstr "Revogar permissões" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "Grupos disponíveis" diff --git a/mayan/apps/permissions/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/pt_BR/LC_MESSAGES/django.mo index 1964cf01c3..fdf88008e3 100644 Binary files a/mayan/apps/permissions/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/pt_BR/LC_MESSAGES/django.po index 1429b5c836..a8361af7f2 100644 --- a/mayan/apps/permissions/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/pt_BR/LC_MESSAGES/django.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-17 23:07+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,11 +22,11 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Permissões" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Permissões insuficientes." @@ -50,7 +50,7 @@ msgstr "Excluir" msgid "Edit" msgstr "Editar" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Regras" @@ -62,27 +62,27 @@ msgstr "Membros" msgid "Role permissions" msgstr "Regra de permissão" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "namespace" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Nome" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "permissão" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "Label" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Grupos" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "Regras" @@ -110,6 +110,21 @@ msgstr "Conceder permissões" msgid "Revoke permissions" msgstr "Revogar as permissões" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "Grupos disponíveis" diff --git a/mayan/apps/permissions/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/ro_RO/LC_MESSAGES/django.mo index 4b503e0d49..94fed5ba5c 100644 Binary files a/mayan/apps/permissions/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/ro_RO/LC_MESSAGES/django.po index 4361fc6aae..0cd0bd96f0 100644 --- a/mayan/apps/permissions/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/ro_RO/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-04-17 09:43+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -19,11 +19,11 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Permisiuni" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Permisiuni insuficiente." @@ -47,7 +47,7 @@ msgstr "Șterge" msgid "Edit" msgstr "Editează" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Roluri" @@ -59,27 +59,27 @@ msgstr "Membri" msgid "Role permissions" msgstr "" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Nume" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "Etichetă" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Grupuri" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "" @@ -107,6 +107,21 @@ msgstr "Grant permisiuni" msgid "Revoke permissions" msgstr "Revocați permisiunile" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "Grupuri disponibile" diff --git a/mayan/apps/permissions/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/ru/LC_MESSAGES/django.mo index b7ca371aea..550f2261b7 100644 Binary files a/mayan/apps/permissions/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/ru/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/ru/LC_MESSAGES/django.po index b41872d643..ce633a7142 100644 --- a/mayan/apps/permissions/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/ru/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-02 04:15+0000\n" -"Last-Translator: lilo.panic\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,11 +19,11 @@ msgstr "" "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" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Разрешения" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "Недостаточно разрешений." @@ -47,7 +47,7 @@ msgstr "Удалить" msgid "Edit" msgstr "Редактировать" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Роли" @@ -59,27 +59,27 @@ msgstr "Участники" msgid "Role permissions" msgstr "Разрешения роли" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "Пространство имен" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Имя" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "Разрешение" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "Надпись" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Группы" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "Роль" @@ -107,6 +107,21 @@ msgstr "Предоставление разрешений" msgid "Revoke permissions" msgstr "Отмена разрешений" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "Доступные группы" diff --git a/mayan/apps/permissions/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/sl_SI/LC_MESSAGES/django.mo index c5f0349f00..e9d600ceed 100644 Binary files a/mayan/apps/permissions/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/sl_SI/LC_MESSAGES/django.po index dbb75c4e17..84e7bd651a 100644 --- a/mayan/apps/permissions/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-17 08:59+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,11 +18,11 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "Pravice" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "" @@ -46,7 +46,7 @@ msgstr "" msgid "Edit" msgstr "" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "Vloge" @@ -58,27 +58,27 @@ msgstr "" msgid "Role permissions" msgstr "" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "Imenski prostor" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Ime" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "Pravice" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "Oznaka" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "Skupine" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "" @@ -106,6 +106,21 @@ msgstr "" msgid "Revoke permissions" msgstr "" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "" diff --git a/mayan/apps/permissions/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/vi_VN/LC_MESSAGES/django.mo index 15f90c971e..ea2943baef 100644 Binary files a/mayan/apps/permissions/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/vi_VN/LC_MESSAGES/django.po index bfb5279281..8f9bb5fe31 100644 --- a/mayan/apps/permissions/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/vi_VN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:03+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -19,11 +19,11 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "" @@ -47,7 +47,7 @@ msgstr "" msgid "Edit" msgstr "Sửa" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "" @@ -59,27 +59,27 @@ msgstr "" msgid "Role permissions" msgstr "" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "Tên" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "" @@ -107,6 +107,21 @@ msgstr "" msgid "Revoke permissions" msgstr "" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "" diff --git a/mayan/apps/permissions/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/permissions/locale/zh_CN/LC_MESSAGES/django.mo index bb23b13241..d4ecb7ac5b 100644 Binary files a/mayan/apps/permissions/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/permissions/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/permissions/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/permissions/locale/zh_CN/LC_MESSAGES/django.po index 3d2e04cb1a..3327c37312 100644 --- a/mayan/apps/permissions/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/permissions/locale/zh_CN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:03+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -19,11 +19,11 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:22 models.py:47 models.py:70 permissions.py:7 +#: apps.py:22 models.py:46 models.py:77 permissions.py:7 msgid "Permissions" msgstr "权限" -#: classes.py:63 +#: classes.py:72 msgid "Insufficient permissions." msgstr "权限不足" @@ -47,7 +47,7 @@ msgstr "" msgid "Edit" msgstr "" -#: links.py:35 models.py:91 views.py:134 +#: links.py:35 models.py:98 views.py:136 msgid "Roles" msgstr "角色" @@ -59,27 +59,27 @@ msgstr "" msgid "Role permissions" msgstr "" -#: models.py:18 +#: models.py:19 msgid "Namespace" msgstr "" -#: models.py:19 +#: models.py:20 msgid "Name" msgstr "名称" -#: models.py:46 +#: models.py:45 msgid "Permission" msgstr "许可" -#: models.py:67 +#: models.py:74 msgid "Label" msgstr "" -#: models.py:73 +#: models.py:80 msgid "Groups" msgstr "用户组" -#: models.py:90 +#: models.py:97 msgid "Role" msgstr "" @@ -107,6 +107,21 @@ msgstr "权限授权" msgid "Revoke permissions" msgstr "撤销权限" +#: serializers.py:46 +msgid "" +"Comma separated list of groups primary keys to add to, or replace in this " +"role." +msgstr "" + +#: serializers.py:53 +msgid "Comma separated list of permission primary keys to grant to this role." +msgstr "" + +#: serializers.py:92 +#, python-format +msgid "No such permission: %s" +msgstr "" + #: views.py:45 msgid "Available groups" msgstr "" diff --git a/mayan/apps/permissions/models.py b/mayan/apps/permissions/models.py index e7bec758fc..0099eb2d81 100644 --- a/mayan/apps/permissions/models.py +++ b/mayan/apps/permissions/models.py @@ -46,17 +46,25 @@ class StoredPermission(models.Model): verbose_name_plural = _('Permissions') def requester_has_this(self, user): - logger.debug('user: %s', user) if user.is_superuser or user.is_staff: + logger.debug('Permission "%s" granted to user "%s" as superuser or staff', + self, + user) return True # Request is one of the permission's holders? for group in user.groups.all(): for role in group.roles.all(): if self in role.permissions.all(): + logger.debug('Permission "%s" granted to user "%s" through role "%s"', + self, + user, + role) return True - logger.debug('Fallthru') + logger.debug('Fallthru: Permission "%s" not granted to user "%s"', + self, + user) return False diff --git a/mayan/apps/permissions/serializers.py b/mayan/apps/permissions/serializers.py index 375818e93a..248452016c 100644 --- a/mayan/apps/permissions/serializers.py +++ b/mayan/apps/permissions/serializers.py @@ -13,9 +13,9 @@ from .models import Role, StoredPermission class PermissionSerializer(serializers.Serializer): - namespace = serializers.CharField() - pk = serializers.CharField() - label = serializers.CharField() + namespace = serializers.CharField(read_only=True) + pk = serializers.CharField(read_only=True) + label = serializers.CharField(read_only=True) def to_representation(self, instance): if isinstance(instance, StoredPermission): @@ -29,15 +29,14 @@ class PermissionSerializer(serializers.Serializer): class RoleSerializer(serializers.HyperlinkedModelSerializer): - groups = GroupSerializer(many=True) - - -class RoleSerializer(serializers.ModelSerializer): groups = GroupSerializer(many=True, read_only=True) permissions = PermissionSerializer(many=True, read_only=True) class Meta: - fields = ('id', 'label', 'groups', 'permissions') + extra_kwargs = { + 'url': {'view_name': 'rest_api:role-detail'}, + } + fields = ('groups', 'id', 'label', 'permissions', 'url') model = Role diff --git a/mayan/apps/permissions/tests/test_api.py b/mayan/apps/permissions/tests/test_api.py index 5a6d39ce12..76f379a230 100644 --- a/mayan/apps/permissions/tests/test_api.py +++ b/mayan/apps/permissions/tests/test_api.py @@ -4,8 +4,7 @@ from django.contrib.auth import get_user_model from django.contrib.auth.models import Group from django.core.urlresolvers import reverse -from rest_framework.test import APITestCase - +from rest_api.tests import BaseAPITestCase from user_management.tests.literals import ( TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_GROUP_NAME @@ -18,7 +17,7 @@ from ..permissions import permission_role_view from .literals import TEST_ROLE_LABEL, TEST_ROLE_LABEL_EDITED -class PermissionAPITestCase(APITestCase): +class PermissionAPITestCase(BaseAPITestCase): def setUp(self): super(PermissionAPITestCase, self).setUp() self.admin_user = get_user_model().objects.create_superuser( diff --git a/mayan/apps/permissions/urls.py b/mayan/apps/permissions/urls.py index 6044f99aec..2eb8d57546 100644 --- a/mayan/apps/permissions/urls.py +++ b/mayan/apps/permissions/urls.py @@ -30,5 +30,4 @@ api_urls = [ url(r'^permissions/$', APIPermissionList.as_view(), name='permission-list'), url(r'^roles/$', APIRoleListView.as_view(), name='role-list'), url(r'^roles/(?P[0-9]+)/$', APIRoleView.as_view(), name='role-detail'), - url(r'^$', APIPermissionList.as_view(), name='permission-list'), ] diff --git a/mayan/apps/rest_api/api_views.py b/mayan/apps/rest_api/api_views.py new file mode 100644 index 0000000000..93ab0e3f4d --- /dev/null +++ b/mayan/apps/rest_api/api_views.py @@ -0,0 +1,19 @@ +from __future__ import unicode_literals + +from rest_framework import generics + +from rest_api.filters import MayanObjectPermissionsFilter +from rest_api.permissions import MayanPermission + +from .classes import APIResource +from .serializers import APIResourceSerializer + + +class APIResourceTypeListView(generics.ListAPIView): + """ + Returns a list of all the available API resources. + """ + + serializer_class = APIResourceSerializer + def get_queryset(self): + return APIResource.all() diff --git a/mayan/apps/rest_api/classes.py b/mayan/apps/rest_api/classes.py index 6a47538bbe..3394b446c1 100644 --- a/mayan/apps/rest_api/classes.py +++ b/mayan/apps/rest_api/classes.py @@ -4,9 +4,33 @@ from django.conf.urls import include, url from django.conf import settings from django.utils.module_loading import import_string +from .exceptions import APIResourcePatternError + + +class APIResource(object): + _registry = {} + + @classmethod + def all(cls): + return cls._registry.values() + + @classmethod + def get(cls, name): + return cls._registry[name] + + def __unicode__(self): + return unicode(self.name) + + def __init__(self, name, label, description=None): + self.label = label + self.name = name + self.description = description + self.__class__._registry[self.name] = self + class APIEndPoint(object): _registry = {} + _patterns = [] @classmethod def get_all(cls): @@ -46,6 +70,12 @@ class APIEndPoint(object): def register_urls(self, urlpatterns): from .urls import urlpatterns as app_urls - app_urls += [ - url(r'^%s/' % (self.name or self.app.name), include(urlpatterns)), - ] + for url in urlpatterns: + if url.regex.pattern not in self.__class__._patterns: + app_urls.append(url) + self.__class__._patterns.append(url.regex.pattern) + else: + raise APIResourcePatternError( + 'App "{}" tried to register API URL pattern "{}", which ' + 'already exists'.format(self.app.label, url.regex.pattern) + ) diff --git a/mayan/apps/rest_api/exceptions.py b/mayan/apps/rest_api/exceptions.py new file mode 100644 index 0000000000..4e0e6ac964 --- /dev/null +++ b/mayan/apps/rest_api/exceptions.py @@ -0,0 +1,16 @@ +from __future__ import unicode_literals + + +class APIError(Exception): + """ + Base exception for the API app + """ + pass + + +class APIResourcePatternError(APIError): + """ + Raised when an app tries to override an existing URL regular expression + pattern + """ + pass diff --git a/mayan/apps/rest_api/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/ar/LC_MESSAGES/django.mo index 41c712e524..96aadb4e6d 100644 Binary files a/mayan/apps/rest_api/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/ar/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/ar/LC_MESSAGES/django.po index 39117fe29c..f59568536c 100644 --- a/mayan/apps/rest_api/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/ar/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-20 19:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,11 @@ msgstr "" msgid "REST API" msgstr "" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/bg/LC_MESSAGES/django.mo index 08a8368551..d713270dd2 100644 Binary files a/mayan/apps/rest_api/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/bg/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/bg/LC_MESSAGES/django.po index 700454133b..68ce2a79d5 100644 --- a/mayan/apps/rest_api/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/bg/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-20 19:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,11 @@ msgstr "" msgid "REST API" msgstr "" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/bs_BA/LC_MESSAGES/django.mo index a2b29641af..5dc33dcdab 100644 Binary files a/mayan/apps/rest_api/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/bs_BA/LC_MESSAGES/django.po index 8930dea0d3..487bf01e00 100644 --- a/mayan/apps/rest_api/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/bs_BA/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-20 19:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,11 @@ msgstr "" msgid "REST API" msgstr "" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/da/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/da/LC_MESSAGES/django.mo index 5786ff1255..c616db04ec 100644 Binary files a/mayan/apps/rest_api/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/da/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/da/LC_MESSAGES/django.po index 41c74e859c..1e360850f7 100644 --- a/mayan/apps/rest_api/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/da/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-20 19:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,11 @@ msgstr "" msgid "REST API" msgstr "" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/de_DE/LC_MESSAGES/django.mo index ce3e338294..deee6b8ce2 100644 Binary files a/mayan/apps/rest_api/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/de_DE/LC_MESSAGES/django.po index e4faadae74..a63989f5e4 100644 --- a/mayan/apps/rest_api/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/de_DE/LC_MESSAGES/django.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Jesaja Everling , 2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" -"Last-Translator: Mathias Behrle \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-24 21:12+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +22,11 @@ msgstr "" msgid "REST API" msgstr "REST API" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "Kein Serialisierer gefunden für: %s" + #: links.py:12 msgid "API Documentation" msgstr "API Dokumentation" diff --git a/mayan/apps/rest_api/locale/en/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/en/LC_MESSAGES/django.mo index 4233b5c52c..2a49b9eccb 100644 Binary files a/mayan/apps/rest_api/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/en/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/en/LC_MESSAGES/django.po index 2440018fb8..631414cab3 100644 --- a/mayan/apps/rest_api/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,6 +21,11 @@ msgstr "" msgid "REST API" msgstr "" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/es/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/es/LC_MESSAGES/django.mo index 2812c5cef8..b197e58d54 100644 Binary files a/mayan/apps/rest_api/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/es/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/es/LC_MESSAGES/django.po index 070f7a296c..f22aae2676 100644 --- a/mayan/apps/rest_api/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/es/LC_MESSAGES/django.po @@ -4,13 +4,13 @@ # # Translators: # Roberto Rosario, 2015 -# Roberto Rosario, 2015 +# Roberto Rosario, 2015,2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-23 03:03+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -23,6 +23,11 @@ msgstr "" msgid "REST API" msgstr "API REST" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "No se pudo encontrar una clase para serializar: %s" + #: links.py:12 msgid "API Documentation" msgstr "Documentación de la API" diff --git a/mayan/apps/rest_api/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/fa/LC_MESSAGES/django.mo index db7be773e0..b5c1455fa0 100644 Binary files a/mayan/apps/rest_api/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/fa/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/fa/LC_MESSAGES/django.po index 946928e0ed..9e3f777b8a 100644 --- a/mayan/apps/rest_api/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/fa/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -22,6 +22,11 @@ msgstr "" msgid "REST API" msgstr "API را متوقف کنید" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/fr/LC_MESSAGES/django.mo index e50d874bce..16d5a0e7c6 100644 Binary files a/mayan/apps/rest_api/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/fr/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/fr/LC_MESSAGES/django.po index 641340ed59..663bee3e05 100644 --- a/mayan/apps/rest_api/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/fr/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" -"Last-Translator: Christophe CHAUVET \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,6 +22,11 @@ msgstr "" msgid "REST API" msgstr "API REST" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "Documentation de l'API" diff --git a/mayan/apps/rest_api/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/hu/LC_MESSAGES/django.mo index 136e76ce92..4144046e02 100644 Binary files a/mayan/apps/rest_api/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/hu/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/hu/LC_MESSAGES/django.po index 38c56de033..5eb41846ce 100644 --- a/mayan/apps/rest_api/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/hu/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-20 19:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,11 @@ msgstr "" msgid "REST API" msgstr "" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/id/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/id/LC_MESSAGES/django.mo index 63a22c3d43..ffa0196af0 100644 Binary files a/mayan/apps/rest_api/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/id/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/id/LC_MESSAGES/django.po index 8372c7714a..7505eb1e72 100644 --- a/mayan/apps/rest_api/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/id/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-20 19:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,11 @@ msgstr "" msgid "REST API" msgstr "" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/it/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/it/LC_MESSAGES/django.mo index 2dbaa04f26..85f0abf402 100644 Binary files a/mayan/apps/rest_api/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/it/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/it/LC_MESSAGES/django.po index cd69ac28a6..4e017d352f 100644 --- a/mayan/apps/rest_api/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/it/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" -"Last-Translator: Giovanni Tricarico \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,6 +22,11 @@ msgstr "" msgid "REST API" msgstr "REST API" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "Documentazione API" diff --git a/mayan/apps/rest_api/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/nl_NL/LC_MESSAGES/django.mo index e84bded8af..a140209a5f 100644 Binary files a/mayan/apps/rest_api/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/nl_NL/LC_MESSAGES/django.po index 7325b55273..c0a91f0004 100644 --- a/mayan/apps/rest_api/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/nl_NL/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-10-28 09:43+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,6 +22,11 @@ msgstr "" msgid "REST API" msgstr "REST API" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "API-documentatie" diff --git a/mayan/apps/rest_api/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/pl/LC_MESSAGES/django.mo index 2365243908..2bdd350122 100644 Binary files a/mayan/apps/rest_api/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/pl/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/pl/LC_MESSAGES/django.po index 229ee8c7d3..0179e45d17 100644 --- a/mayan/apps/rest_api/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/pl/LC_MESSAGES/django.po @@ -8,20 +8,25 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" #: apps.py:16 links.py:8 msgid "REST API" msgstr "REST API" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/pt/LC_MESSAGES/django.mo index 9e9d7641f6..93e976bebf 100644 Binary files a/mayan/apps/rest_api/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/pt/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/pt/LC_MESSAGES/django.po index d421fbffad..98458b36cf 100644 --- a/mayan/apps/rest_api/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/pt/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-20 19:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,11 @@ msgstr "" msgid "REST API" msgstr "Documentação API" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/pt_BR/LC_MESSAGES/django.mo index 17620a6438..f1c00d9f90 100644 Binary files a/mayan/apps/rest_api/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/pt_BR/LC_MESSAGES/django.po index 96ec65c16a..8b6d91ec93 100644 --- a/mayan/apps/rest_api/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/pt_BR/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-04 19:55+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,6 +23,11 @@ msgstr "" msgid "REST API" msgstr "REST API" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "Documentação da API" diff --git a/mayan/apps/rest_api/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/ro_RO/LC_MESSAGES/django.mo index b7e889c94a..baaa5240f3 100644 Binary files a/mayan/apps/rest_api/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/ro_RO/LC_MESSAGES/django.po index 3773630648..314eabdc3b 100644 --- a/mayan/apps/rest_api/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/ro_RO/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-20 19:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,11 @@ msgstr "" msgid "REST API" msgstr "" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/ru/LC_MESSAGES/django.mo index 5ffeeb884c..b65f47be19 100644 Binary files a/mayan/apps/rest_api/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/ru/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/ru/LC_MESSAGES/django.po index 1b75decbe2..b8396e683f 100644 --- a/mayan/apps/rest_api/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/ru/LC_MESSAGES/django.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-07-19 20:05+0000\n" -"Last-Translator: lilo.panic\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,6 +22,11 @@ msgstr "" msgid "REST API" msgstr "REST API" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "Документация API" diff --git a/mayan/apps/rest_api/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/sl_SI/LC_MESSAGES/django.mo index 46cbaabbf9..a6994d9f47 100644 Binary files a/mayan/apps/rest_api/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/sl_SI/LC_MESSAGES/django.po index 8b4263f7c0..7d1a875d27 100644 --- a/mayan/apps/rest_api/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/sl_SI/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-20 19:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,11 @@ msgstr "" msgid "REST API" msgstr "" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/vi_VN/LC_MESSAGES/django.mo index b4343e627b..8eabc3c25f 100644 Binary files a/mayan/apps/rest_api/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/vi_VN/LC_MESSAGES/django.po index 8f5c85b32b..812067054d 100644 --- a/mayan/apps/rest_api/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/vi_VN/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-20 19:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,11 @@ msgstr "" msgid "REST API" msgstr "" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/rest_api/locale/zh_CN/LC_MESSAGES/django.mo index f590993e9f..2caa55a542 100644 Binary files a/mayan/apps/rest_api/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/rest_api/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/rest_api/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/rest_api/locale/zh_CN/LC_MESSAGES/django.po index 1d781e7003..ab8052d90a 100644 --- a/mayan/apps/rest_api/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/rest_api/locale/zh_CN/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-20 19:18+0000\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,6 +21,11 @@ msgstr "" msgid "REST API" msgstr "" +#: fields.py:30 +#, python-format +msgid "Unable to find serializer class for: %s" +msgstr "" + #: links.py:12 msgid "API Documentation" msgstr "" diff --git a/mayan/apps/rest_api/serializers.py b/mayan/apps/rest_api/serializers.py new file mode 100644 index 0000000000..ecfa25faec --- /dev/null +++ b/mayan/apps/rest_api/serializers.py @@ -0,0 +1,9 @@ +from __future__ import unicode_literals + +from rest_framework import serializers + + +class APIResourceSerializer(serializers.Serializer): + description = serializers.CharField() + label = serializers.CharField() + name = serializers.CharField() diff --git a/mayan/apps/rest_api/tests/__init__.py b/mayan/apps/rest_api/tests/__init__.py new file mode 100644 index 0000000000..0b7c12d02a --- /dev/null +++ b/mayan/apps/rest_api/tests/__init__.py @@ -0,0 +1 @@ +from .base import BaseAPITestCase # NOQA diff --git a/mayan/apps/rest_api/tests/base.py b/mayan/apps/rest_api/tests/base.py new file mode 100644 index 0000000000..098d83f9b9 --- /dev/null +++ b/mayan/apps/rest_api/tests/base.py @@ -0,0 +1,17 @@ +from __future__ import absolute_import, unicode_literals + +from rest_framework.test import APITestCase + +from permissions.classes import Permission +from smart_settings.classes import Namespace + + +class BaseAPITestCase(APITestCase): + """ + API test case class that invalidates permissions and smart settings + """ + + def setUp(self): + super(BaseAPITestCase, self).setUp() + Namespace.invalidate_cache_all() + Permission.invalidate_cache() diff --git a/mayan/apps/rest_api/urls.py b/mayan/apps/rest_api/urls.py index cfe3955b66..9f2a4a95d3 100644 --- a/mayan/apps/rest_api/urls.py +++ b/mayan/apps/rest_api/urls.py @@ -2,15 +2,18 @@ from __future__ import unicode_literals from django.conf.urls import url -from .views import APIBase, APIAppView, BrowseableObtainAuthToken +from .api_views import APIResourceTypeListView +from .views import APIBase, BrowseableObtainAuthToken -urlpatterns = [ -] +urlpatterns = [] api_urls = [ url(r'^$', APIBase.as_view(), name='api_root'), - url(r'^api/(?P.*)/?$', APIAppView.as_view(), name='api_app'), + url( + r'^resources/$', APIResourceTypeListView.as_view(), + name='resource-list' + ), url( r'^auth/token/obtain/$', BrowseableObtainAuthToken.as_view(), name='auth_token_obtain' diff --git a/mayan/apps/rest_api/views.py b/mayan/apps/rest_api/views.py index f5e8118697..8a2064fd36 100644 --- a/mayan/apps/rest_api/views.py +++ b/mayan/apps/rest_api/views.py @@ -13,13 +13,6 @@ class APIBase(SwaggerResourcesView): renderer_classes = (renderers.BrowsableAPIRenderer, renderers.JSONRenderer) -class APIAppView(SwaggerApiView): - """ - Entry points of the selected app. - """ - renderer_classes = (renderers.BrowsableAPIRenderer, renderers.JSONRenderer) - - class BrowseableObtainAuthToken(ObtainAuthToken): """ Obtain an API authentication token. diff --git a/mayan/apps/smart_settings/apps.py b/mayan/apps/smart_settings/apps.py index 7032b084db..6825455503 100644 --- a/mayan/apps/smart_settings/apps.py +++ b/mayan/apps/smart_settings/apps.py @@ -13,8 +13,8 @@ from .widgets import setting_widget class SmartSettingsApp(MayanAppConfig): app_namespace = 'settings' app_url = 'settings' + has_tests = True name = 'smart_settings' - test = True verbose_name = _('Smart settings') def ready(self): diff --git a/mayan/apps/smart_settings/classes.py b/mayan/apps/smart_settings/classes.py index b7d399a94e..472d37bb51 100644 --- a/mayan/apps/smart_settings/classes.py +++ b/mayan/apps/smart_settings/classes.py @@ -84,19 +84,29 @@ class Setting(object): def __unicode__(self): return unicode(self.global_name) + def cache_value(self): + self.raw_value = getattr(settings, self.global_name, self.default) + self.yaml = Setting.serialize_value(self.raw_value) + self.loaded = True + def invalidate_cache(self): self.loaded = False @property def serialized_value(self): + """ + YAML serialize value of the setting. + Used for UI display. + """ + if not self.loaded: + self.cache_value() + return self.yaml @property def value(self): if not self.loaded: - self.raw_value = getattr(settings, self.global_name, self.default) - self.yaml = Setting.serialize_value(self.raw_value) - self.loaded = True + self.cache_value() return self.raw_value diff --git a/mayan/apps/smart_settings/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/ar/LC_MESSAGES/django.mo index 548116b58b..2b03b9f1eb 100644 Binary files a/mayan/apps/smart_settings/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/ar/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/ar/LC_MESSAGES/django.po index e88d7ea2cb..0a74403a2f 100644 --- a/mayan/apps/smart_settings/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/ar/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -34,14 +34,6 @@ msgstr "اسم" msgid "Value" msgstr "قيمة" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "" diff --git a/mayan/apps/smart_settings/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/bg/LC_MESSAGES/django.mo index cc892e5fca..2969dc44b7 100644 Binary files a/mayan/apps/smart_settings/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/bg/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/bg/LC_MESSAGES/django.po index 2be7dd9758..4ce434c341 100644 --- a/mayan/apps/smart_settings/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/bg/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -34,14 +34,6 @@ msgstr "Име" msgid "Value" msgstr "Стойност" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "" diff --git a/mayan/apps/smart_settings/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/bs_BA/LC_MESSAGES/django.mo index c52394f1ea..86f0a96866 100644 Binary files a/mayan/apps/smart_settings/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/bs_BA/LC_MESSAGES/django.po index 92d79599ca..6262c8d7d2 100644 --- a/mayan/apps/smart_settings/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/bs_BA/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -34,14 +34,6 @@ msgstr "Ime" msgid "Value" msgstr "Vrijednost" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "" diff --git a/mayan/apps/smart_settings/locale/da/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/da/LC_MESSAGES/django.mo index ba6d0b7dc7..97b61a5453 100644 Binary files a/mayan/apps/smart_settings/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/da/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/da/LC_MESSAGES/django.po index ebae68cbfa..595a3ce96b 100644 --- a/mayan/apps/smart_settings/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/da/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -34,14 +34,6 @@ msgstr "Navn" msgid "Value" msgstr "" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "" diff --git a/mayan/apps/smart_settings/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/de_DE/LC_MESSAGES/django.mo index 9fc6ce3de9..2482717367 100644 Binary files a/mayan/apps/smart_settings/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/de_DE/LC_MESSAGES/django.po index 1c3d4ab687..56f33e59e8 100644 --- a/mayan/apps/smart_settings/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/de_DE/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" -"Last-Translator: Mathias Behrle \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,14 +37,6 @@ msgstr "Name" msgid "Value" msgstr "Wert" -#: apps.py:37 -msgid "Found in path" -msgstr "Gefunden in Pfad" - -#: apps.py:40 -msgid "n/a" -msgstr "unbekannt" - #: links.py:11 links.py:14 msgid "Settings" msgstr "Einstellungen" diff --git a/mayan/apps/smart_settings/locale/en/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/en/LC_MESSAGES/django.mo index 8dde99e136..19d542c5e6 100644 Binary files a/mayan/apps/smart_settings/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/en/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/en/LC_MESSAGES/django.po index df4424f65f..8065ba6911 100644 --- a/mayan/apps/smart_settings/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2012-12-12 06:06+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -37,14 +37,6 @@ msgstr "" msgid "Value" msgstr "value" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 #, fuzzy msgid "Settings" diff --git a/mayan/apps/smart_settings/locale/es/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/es/LC_MESSAGES/django.mo index 4f7ee202de..82ea5ceebf 100644 Binary files a/mayan/apps/smart_settings/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/es/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/es/LC_MESSAGES/django.po index 9a222e2fe9..3a7a42c0e6 100644 --- a/mayan/apps/smart_settings/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/es/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-05-09 01:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -37,14 +37,6 @@ msgstr "Nombre" msgid "Value" msgstr "Valor" -#: apps.py:37 -msgid "Found in path" -msgstr "Existe en ruta" - -#: apps.py:40 -msgid "n/a" -msgstr "n/a" - #: links.py:11 links.py:14 msgid "Settings" msgstr "Ajustes" diff --git a/mayan/apps/smart_settings/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/fa/LC_MESSAGES/django.mo index e871465a86..f52c35d930 100644 Binary files a/mayan/apps/smart_settings/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/fa/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/fa/LC_MESSAGES/django.po index 176d446380..5a7e327203 100644 --- a/mayan/apps/smart_settings/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/fa/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -36,14 +36,6 @@ msgstr "نام" msgid "Value" msgstr "مقدار" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "تنظیمات" diff --git a/mayan/apps/smart_settings/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/fr/LC_MESSAGES/django.mo index db1c4af7f5..3494d8dbe6 100644 Binary files a/mayan/apps/smart_settings/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/fr/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/fr/LC_MESSAGES/django.po index 4c31ff39f7..e00e733d33 100644 --- a/mayan/apps/smart_settings/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/fr/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" -"Last-Translator: Thierry Schott \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,14 +37,6 @@ msgstr "Nom" msgid "Value" msgstr "Valeur" -#: apps.py:37 -msgid "Found in path" -msgstr "Trouvé dans le chemin" - -#: apps.py:40 -msgid "n/a" -msgstr "n/a" - #: links.py:11 links.py:14 msgid "Settings" msgstr "Paramètres" diff --git a/mayan/apps/smart_settings/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/hu/LC_MESSAGES/django.mo index 7124e333dc..4144046e02 100644 Binary files a/mayan/apps/smart_settings/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/hu/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/hu/LC_MESSAGES/django.po index f361f4b040..e6de50ca28 100644 --- a/mayan/apps/smart_settings/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/hu/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -34,14 +34,6 @@ msgstr "" msgid "Value" msgstr "" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "" diff --git a/mayan/apps/smart_settings/locale/id/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/id/LC_MESSAGES/django.mo index 2b4b4cee56..ffa0196af0 100644 Binary files a/mayan/apps/smart_settings/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/id/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/id/LC_MESSAGES/django.po index 18ae6163e3..4917538c3f 100644 --- a/mayan/apps/smart_settings/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -34,14 +34,6 @@ msgstr "" msgid "Value" msgstr "" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "" diff --git a/mayan/apps/smart_settings/locale/it/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/it/LC_MESSAGES/django.mo index 70b395ba5c..f35532241c 100644 Binary files a/mayan/apps/smart_settings/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/it/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/it/LC_MESSAGES/django.po index 0f9e090c04..c94c70e049 100644 --- a/mayan/apps/smart_settings/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/it/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-09-24 09:38+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,14 +35,6 @@ msgstr "Nome " msgid "Value" msgstr "Valore" -#: apps.py:37 -msgid "Found in path" -msgstr "Trovato nel percorso" - -#: apps.py:40 -msgid "n/a" -msgstr "n/a" - #: links.py:11 links.py:14 msgid "Settings" msgstr "Impostazioni" diff --git a/mayan/apps/smart_settings/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/nl_NL/LC_MESSAGES/django.mo index 709f33def4..b882957c51 100644 Binary files a/mayan/apps/smart_settings/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/nl_NL/LC_MESSAGES/django.po index 4493fc2ae5..241f2e070d 100644 --- a/mayan/apps/smart_settings/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/nl_NL/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-10-28 10:23+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,14 +35,6 @@ msgstr "Naam" msgid "Value" msgstr "Waarde" -#: apps.py:37 -msgid "Found in path" -msgstr "Gevonden in pad" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "Instellingen" diff --git a/mayan/apps/smart_settings/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/pl/LC_MESSAGES/django.mo index 7f631eb02d..e64163cf3f 100644 Binary files a/mayan/apps/smart_settings/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/pl/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/pl/LC_MESSAGES/django.po index e18088ef25..adead0cbc6 100644 --- a/mayan/apps/smart_settings/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/pl/LC_MESSAGES/django.po @@ -12,15 +12,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" -"Last-Translator: Wojtek Warczakowski \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" #: apps.py:18 permissions.py:7 msgid "Smart settings" @@ -38,14 +38,6 @@ msgstr "Nazwa" msgid "Value" msgstr "Wartość" -#: apps.py:37 -msgid "Found in path" -msgstr "Znaleziono ścieżkę" - -#: apps.py:40 -msgid "n/a" -msgstr "n/d" - #: links.py:11 links.py:14 msgid "Settings" msgstr "Ustawienia" diff --git a/mayan/apps/smart_settings/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/pt/LC_MESSAGES/django.mo index 3910ca596e..617a7c47f3 100644 Binary files a/mayan/apps/smart_settings/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/pt/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/pt/LC_MESSAGES/django.po index 50dce019e6..605aeb1dc5 100644 --- a/mayan/apps/smart_settings/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/pt/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -34,14 +34,6 @@ msgstr "Nome" msgid "Value" msgstr "Valor" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "" diff --git a/mayan/apps/smart_settings/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/pt_BR/LC_MESSAGES/django.mo index b9ca7fb0ed..5c92148788 100644 Binary files a/mayan/apps/smart_settings/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/pt_BR/LC_MESSAGES/django.po index 51a2e080a9..1cf411455c 100644 --- a/mayan/apps/smart_settings/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/pt_BR/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-04 19:09+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,14 +37,6 @@ msgstr "Nome" msgid "Value" msgstr "Valor" -#: apps.py:37 -msgid "Found in path" -msgstr "Existe no caminho" - -#: apps.py:40 -msgid "n/a" -msgstr "n/a" - #: links.py:11 links.py:14 msgid "Settings" msgstr "Definições" diff --git a/mayan/apps/smart_settings/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/ro_RO/LC_MESSAGES/django.mo index f3b1eacf33..1971eed160 100644 Binary files a/mayan/apps/smart_settings/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/ro_RO/LC_MESSAGES/django.po index 36a97d72ee..e843c53dee 100644 --- a/mayan/apps/smart_settings/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/ro_RO/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -34,14 +34,6 @@ msgstr "Nume" msgid "Value" msgstr "Valoare" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "" diff --git a/mayan/apps/smart_settings/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/ru/LC_MESSAGES/django.mo index 8fd7313507..6504c38f76 100644 Binary files a/mayan/apps/smart_settings/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/ru/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/ru/LC_MESSAGES/django.po index 3e8cdb176a..27c8a9fd27 100644 --- a/mayan/apps/smart_settings/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/ru/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-07-19 20:00+0000\n" -"Last-Translator: lilo.panic\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,14 +35,6 @@ msgstr "Имя" msgid "Value" msgstr "Значение" -#: apps.py:37 -msgid "Found in path" -msgstr "Найдено в пути" - -#: apps.py:40 -msgid "n/a" -msgstr "не задано" - #: links.py:11 links.py:14 msgid "Settings" msgstr "Настройки" diff --git a/mayan/apps/smart_settings/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/sl_SI/LC_MESSAGES/django.mo index 50e863802e..bf7b1efd0f 100644 Binary files a/mayan/apps/smart_settings/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/sl_SI/LC_MESSAGES/django.po index 755c80bf6d..65829a1947 100644 --- a/mayan/apps/smart_settings/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -34,14 +34,6 @@ msgstr "Ime" msgid "Value" msgstr "" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "" diff --git a/mayan/apps/smart_settings/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/vi_VN/LC_MESSAGES/django.mo index f5c06ef6e3..06c587ac15 100644 Binary files a/mayan/apps/smart_settings/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/vi_VN/LC_MESSAGES/django.po index ae3860801d..499c667779 100644 --- a/mayan/apps/smart_settings/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/vi_VN/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -34,14 +34,6 @@ msgstr "Tên" msgid "Value" msgstr "Giá trị" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "" diff --git a/mayan/apps/smart_settings/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/smart_settings/locale/zh_CN/LC_MESSAGES/django.mo index e669f661eb..0a2150494a 100644 Binary files a/mayan/apps/smart_settings/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/smart_settings/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/smart_settings/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/smart_settings/locale/zh_CN/LC_MESSAGES/django.po index de302b6284..c74b73dd06 100644 --- a/mayan/apps/smart_settings/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/smart_settings/locale/zh_CN/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:02+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -34,14 +34,6 @@ msgstr "名称" msgid "Value" msgstr "值" -#: apps.py:37 -msgid "Found in path" -msgstr "" - -#: apps.py:40 -msgid "n/a" -msgstr "" - #: links.py:11 links.py:14 msgid "Settings" msgstr "" diff --git a/mayan/apps/sources/apps.py b/mayan/apps/sources/apps.py index 7e84d4795b..fd5a5a0d9c 100644 --- a/mayan/apps/sources/apps.py +++ b/mayan/apps/sources/apps.py @@ -23,8 +23,8 @@ from .handlers import ( ) from .links import ( link_document_create_multiple, link_setup_sources, - link_setup_source_create_imap_email, link_setup_source_create_pop3_email, - link_setup_source_create_sane_scanner, + link_setup_source_check_now, link_setup_source_create_imap_email, + link_setup_source_create_pop3_email, link_setup_source_create_sane_scanner, link_setup_source_create_watch_folder, link_setup_source_create_webform, link_setup_source_create_staging_folder, link_setup_source_delete, link_setup_source_edit, link_setup_source_logs, link_staging_file_delete, @@ -34,8 +34,8 @@ from .widgets import StagingFileThumbnailWidget class SourcesApp(MayanAppConfig): + has_tests = True name = 'sources' - test = True verbose_name = _('Sources') def ready(self): @@ -128,6 +128,10 @@ class SourcesApp(MayanAppConfig): menu_object.bind_links( links=(link_staging_file_delete,), sources=(StagingFile,) ) + menu_object.bind_links( + links=(link_setup_source_check_now,), + sources=(IMAPEmail, POP3Email, WatchFolderSource,) + ) menu_secondary.bind_links( links=( link_setup_sources, link_setup_source_create_webform, diff --git a/mayan/apps/sources/links.py b/mayan/apps/sources/links.py index 95c1eca094..793e3a59bf 100644 --- a/mayan/apps/sources/links.py +++ b/mayan/apps/sources/links.py @@ -92,3 +92,7 @@ link_setup_source_logs = Link( text=_('Logs'), view='sources:setup_source_logs', args=('resolved_object.pk',), permissions=(permission_sources_setup_view,) ) +link_setup_source_check_now = Link( + text=_('Check now'), view='sources:setup_source_check', + args=('resolved_object.pk',), permissions=(permission_sources_setup_view,) +) diff --git a/mayan/apps/sources/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/ar/LC_MESSAGES/django.mo index f3dbbafa42..19970f346f 100644 Binary files a/mayan/apps/sources/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/ar/LC_MESSAGES/django.po b/mayan/apps/sources/locale/ar/LC_MESSAGES/django.po index 41c790b791..041cf5ba96 100644 --- a/mayan/apps/sources/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/ar/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -19,27 +19,27 @@ msgstr "" "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" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "" @@ -63,7 +63,7 @@ msgstr "فك الملفات المضغوطة" msgid "Upload a compressed file's contained files as individual documents" msgstr "تحميل الملفات في ملف مضغوط كوثائق منفردة" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "ملف الاعداد" @@ -71,54 +71,58 @@ msgstr "ملف الاعداد" msgid "File" msgstr "ملف" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Default" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "تحرير" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "مصادر الوثائق" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "دائما" @@ -155,7 +159,7 @@ msgstr "" msgid "Label" msgstr "" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "" @@ -416,27 +420,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -445,65 +449,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "انشاء مصدر جديد من النوع: %s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "الخطوة التالية" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/bg/LC_MESSAGES/django.mo index 6ebd272756..10056462db 100644 Binary files a/mayan/apps/sources/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/bg/LC_MESSAGES/django.po b/mayan/apps/sources/locale/bg/LC_MESSAGES/django.po index c5e0b1135e..a4c60bd798 100644 --- a/mayan/apps/sources/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/bg/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -19,27 +19,27 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "" @@ -63,7 +63,7 @@ msgstr "" msgid "Upload a compressed file's contained files as individual documents" msgstr "" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "" @@ -71,54 +71,58 @@ msgstr "" msgid "File" msgstr "Файл" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "По подразбиране" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "Редактиране" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Източници на документи" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Винаги" @@ -155,7 +159,7 @@ msgstr "" msgid "Label" msgstr "" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "" @@ -416,27 +420,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -445,65 +449,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Следваща стъпка" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/bs_BA/LC_MESSAGES/django.mo index 3d7419f220..c323e3fc43 100644 Binary files a/mayan/apps/sources/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/sources/locale/bs_BA/LC_MESSAGES/django.po index 0230eb46f0..46c3e2ad3d 100644 --- a/mayan/apps/sources/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/bs_BA/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -19,27 +19,27 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "" @@ -63,7 +63,7 @@ msgstr "Otpakuj kompresovane datoteke" msgid "Upload a compressed file's contained files as individual documents" msgstr "Upload kompresovane datoteke koja sadrži individualne dokumente" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "Osnovna datoteka" @@ -71,54 +71,58 @@ msgstr "Osnovna datoteka" msgid "File" msgstr "Datoteka" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "default" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "Urediti" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "izvori dokumenata" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Uvijek" @@ -155,7 +159,7 @@ msgstr "" msgid "Label" msgstr "" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "" @@ -416,27 +420,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -445,65 +449,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Kreiraj novi tip izvora: %s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Sljedeći korak" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/da/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/da/LC_MESSAGES/django.mo index f73fd7ff4b..232ec14e56 100644 Binary files a/mayan/apps/sources/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/da/LC_MESSAGES/django.po b/mayan/apps/sources/locale/da/LC_MESSAGES/django.po index 681b2a1908..b2fb2e2d31 100644 --- a/mayan/apps/sources/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/da/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -19,27 +19,27 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "" @@ -63,7 +63,7 @@ msgstr "Udpak komprimerede filer" msgid "Upload a compressed file's contained files as individual documents" msgstr "Upload individuelle filer fra komprimeret arkiv" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "Staging fil" @@ -71,54 +71,58 @@ msgstr "Staging fil" msgid "File" msgstr "Fil" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Standard" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Document kilder" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Altid" @@ -155,7 +159,7 @@ msgstr "" msgid "Label" msgstr "" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "" @@ -416,27 +420,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -445,65 +449,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Dan en ny kilde af typen: %s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Næste skridt" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/de_DE/LC_MESSAGES/django.mo index b148fe64b4..6e702bd359 100644 Binary files a/mayan/apps/sources/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/sources/locale/de_DE/LC_MESSAGES/django.po index 4235d01a05..9e125cb8e6 100644 --- a/mayan/apps/sources/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/de_DE/LC_MESSAGES/django.po @@ -14,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-10-31 18:57+0000\n" -"Last-Translator: Tobias Paepke \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,27 +24,27 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "Quellen" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "Quelle definieren" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "Dokumentenquellen definieren verschiedene Möglichkeiten für die Einspeisung in Mayan EDMS. Minimal ein Webformular für das Hochladen mittels Browser ist erforderlich." -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "Erstellt" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "Bild" @@ -68,7 +68,7 @@ msgstr "Komprimierte Dateien entpacken" msgid "Upload a compressed file's contained files as individual documents" msgstr "Ein komprimiertes Archiv hochladen, das einzelne Dokumente enthält" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "Arbeitsdatei" @@ -76,54 +76,58 @@ msgstr "Arbeitsdatei" msgid "File" msgstr "Datei" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Standard" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "Neues Dokument" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "Neue IMAP Quelle hinzufügen" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "Neue POP3 Quelle hinzufügen" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "Neuen Staging-Ordner hinzufügen" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "Neuen Beobachtungs-Ordner hinzufügen" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "Neue Quelle für Webformular hinzufügen" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "Löschen" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "Bearbeiten" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Dokumentenquelle" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "Neue Version hochladen" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "Protokolle" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Immer" @@ -160,7 +164,7 @@ msgstr "IMAP" msgid "Label" msgstr "Bezeichner" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "Aktiviert" @@ -421,27 +425,27 @@ msgstr "Fehler bei der Verarbeitung der Quelle %s" msgid "Clear" msgstr "Löschen" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "Logeinträge für Quelle %s" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "Es wurden keine interaktiven Dokumentenquellen konfiguriert. Bitte erstellen oder aktivieren Sie eine bevor Sie fortsetzen." -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "Dokumenteneigenschaften" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "Dateien im Staging Pfad" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "Neues Dokument in die Upload-Warteschlange eingereiht und demnächst verfügbar" @@ -450,65 +454,77 @@ msgstr "Neues Dokument in die Upload-Warteschlange eingereiht und demnächst ver msgid "Upload a local document from source: %s" msgstr "Ein Dokument aus Quelle %s hochladen" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "Vom Dokument \"%s\" können keine neuen Versionen hochgeladen werden." -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "Neue Dokumentenvrsion in die Upload-Warteschlange eingereiht und demnächst verfügbar" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "Eine neue Version von Quelle %s hochladen" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Quelle des Typs %s erstellen" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "Quelle %s wirklich löschen?" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "Quelle %s bearbeiten" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "Typ" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "Seitenbild Stagingdatei" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "Schritt 1 von 3: Dokumententyp auswählen" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "Schritt 2 von 3: Metadaten des Dokuments eingeben" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "Schritt 3 von 3: Tags auswählen" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Nächster Schritt" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "Uploadassistent" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/en/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/en/LC_MESSAGES/django.mo index 240f0068ce..316bd54305 100644 Binary files a/mayan/apps/sources/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/en/LC_MESSAGES/django.po b/mayan/apps/sources/locale/en/LC_MESSAGES/django.po index 4b311ed4d1..2c876a7f30 100644 --- a/mayan/apps/sources/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2013-11-20 13:14+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,29 +18,29 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 #, fuzzy msgid "Sources" msgstr "sources" -#: apps.py:53 +#: apps.py:54 #, fuzzy #| msgid "Create new document sources" msgid "Create a document source" msgstr "Create new document sources" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "" -#: apps.py:71 +#: apps.py:73 #, fuzzy msgid "Thumbnail" msgstr "thumbnail" @@ -65,7 +65,7 @@ msgstr "Expand compressed files" msgid "Upload a compressed file's contained files as individual documents" msgstr "Upload a compressed file's contained files as individual documents" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "Staging file" @@ -73,60 +73,64 @@ msgstr "Staging file" msgid "File" msgstr "File" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "" -#: links.py:26 +#: links.py:30 #, fuzzy msgid "New document" msgstr "upload new version" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 #, fuzzy msgid "Add new staging folder" msgstr "server staging folders" -#: links.py:50 +#: links.py:54 #, fuzzy msgid "Add new watch folder" msgstr "server watch folders" -#: links.py:55 +#: links.py:59 #, fuzzy msgid "Add new webform source" msgstr "add new source" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 #, fuzzy msgid "Delete" msgstr "delete" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Document sources" -#: links.py:80 +#: links.py:84 #, fuzzy msgid "Upload new version" msgstr "upload new version" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Always" @@ -166,7 +170,7 @@ msgstr "" msgid "Label" msgstr "" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 #, fuzzy msgid "Enabled" msgstr "enabled" @@ -450,12 +454,12 @@ msgstr "Error creating source; %s" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, fuzzy, python-format msgid "Log entries for source: %s" msgstr "upload a new version from source: %s" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 #, fuzzy msgid "" "No interactive document sources have been defined or none have been enabled, " @@ -463,18 +467,18 @@ msgid "" msgstr "" "No interactive document sources have been defined or none have been enabled." -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #, fuzzy #| msgid "Document sources" msgid "Document properties" msgstr "Document sources" -#: views.py:163 +#: views.py:162 #, fuzzy msgid "Files in staging path" msgstr "files in staging path" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -483,66 +487,78 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "upload a local document from source: %s" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 #, fuzzy msgid "New document version queued for uploaded and will be available shortly." msgstr "New document version uploaded successfully." -#: views.py:419 +#: views.py:418 #, fuzzy, python-format msgid "Upload a new version from source: %s" msgstr "upload a new version from source: %s" -#: views.py:460 +#: views.py:458 +#, fuzzy, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "upload a new version from source: %s" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Create new source of type: %s" -#: views.py:480 +#: views.py:505 #, fuzzy, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "Delete document sources" -#: views.py:499 +#: views.py:524 #, fuzzy, python-format msgid "Edit source: %s" msgstr "edit source: %s" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "" -#: widgets.py:26 -#, fuzzy -msgid "Staging file page image" -msgstr "Staging file" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#, fuzzy +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/es/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/es/LC_MESSAGES/django.mo index 7497f502a3..80388a6a19 100644 Binary files a/mayan/apps/sources/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/es/LC_MESSAGES/django.po b/mayan/apps/sources/locale/es/LC_MESSAGES/django.po index 5baae4eb66..c95ac08536 100644 --- a/mayan/apps/sources/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/es/LC_MESSAGES/django.po @@ -7,13 +7,13 @@ # jmcainzos , 2014 # jmcainzos , 2015 # Lory977 , 2015 -# Roberto Rosario, 2015-2016 +# Roberto Rosario, 2015-2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-23 06:42+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-23 03:02+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -22,27 +22,27 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "Fuentes" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "Crear una nueva fuente de documentos" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "Las fuentes de documentos son la manera en la que se almacenan nuevos documentos en Mayan EDMS. Crea por lo menos una fuente del tipo formulario web para poder cargar documentos desde un navegador." -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "Creado" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "Foto miniatura" @@ -66,7 +66,7 @@ msgstr "Expandir archivos comprimidos" msgid "Upload a compressed file's contained files as individual documents" msgstr "Subir los archivos de un archivo comprimido como documentos individuales" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "Archivo provisional" @@ -74,54 +74,58 @@ msgstr "Archivo provisional" msgid "File" msgstr "Archivo" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Por defecto" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "Nuevo documento" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "Añadir nuevo correo electrónico IMAP" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "Añadir nuevo correo electrónico POP3" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "Añadir nueva carpeta de ensayo" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "Añadir nueva carpeta observada" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "Añadir nueva fuente en formato web" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "Borrar" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "Editar" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Fuentes de documentos" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "Subir versión nueva" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "Bitácoras" +#: links.py:91 +msgid "Check now" +msgstr "Revisar ahora" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Siempre" @@ -158,7 +162,7 @@ msgstr "Correo electrónico IMAP" msgid "Label" msgstr "Etiqueta" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "Habilitado" @@ -367,7 +371,7 @@ msgstr "Correo electrónico POP" #: models.py:534 msgid "IMAP Mailbox from which to check for messages." -msgstr "" +msgstr "Buzón IMAP en el cual revisar mensajes." #: models.py:535 msgid "Mailbox" @@ -419,27 +423,27 @@ msgstr "Error procesando fuente: %s" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "Entradas de bitácora para fuente: %s" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "No se han definido fuentes de documentos interactivos o no hay ninguna habilitada, cree una antes de continuar." -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "Propiedades de documento" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "Archivos en ruta de ensayo" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "Nuevo documento en cola para ser cargado, estará disponible en breve." @@ -448,65 +452,77 @@ msgstr "Nuevo documento en cola para ser cargado, estará disponible en breve." msgid "Upload a local document from source: %s" msgstr "Subir documento local desde la fuente: %s" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." -msgstr "" +msgstr "Documento \"%s\" esta bloqueado de crear nuevas versiones." -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "Nueva versión del documento en cola para ser cargado, estará disponible en breve." -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "Subir una nueva versión de la fuente: %s" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "¿Lanzar chequeo para la fuenta \"%s\"? " + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Crear nuevo tipo de fuente: %s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "¿Eliminar la fuente: %s?" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "Editar fuente: %s" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "Tipo" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "Imagen de página de archivo provisional" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "Paso 1 de 3: Seleccione tipo de documento" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "Paso 2 de 3: Entre la metadata del documento" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "Pago 3 de 3: Seleccione las etiquetas" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Siguiente paso" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "Asistente de carga de documentos" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "Etiquetas a ser anejadas." + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/fa/LC_MESSAGES/django.mo index 1c1075e131..fb5190431f 100644 Binary files a/mayan/apps/sources/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/fa/LC_MESSAGES/django.po b/mayan/apps/sources/locale/fa/LC_MESSAGES/django.po index 732e2b8877..36864cc90f 100644 --- a/mayan/apps/sources/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/fa/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -19,27 +19,27 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "سورس" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "ساخته‌شده" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "اندازه کوچک" @@ -63,7 +63,7 @@ msgstr "بازگشایی فایلهای فشرده" msgid "Upload a compressed file's contained files as individual documents" msgstr "آپلود فایل فشرده شامل فایل اصلی سند." -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "پرونده مرحله ای" @@ -71,54 +71,58 @@ msgstr "پرونده مرحله ای" msgid "File" msgstr "پرونده" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "پیش فرض" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "اضافه کردن IMAP جدید" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "اضافه کردن pop3 جدید" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "ایجتد پرونده مرحله ای" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "ایجاد پرونده تحت نظر" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "اضافه کردن سورس جدید یک وب فرم" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "حذف" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "ویرایش" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "سورسهای سند" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "آپلود نسخه دید" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "همیشه" @@ -155,7 +159,7 @@ msgstr "ایمیل IMAP" msgid "Label" msgstr "برچسب" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "فعال شده" @@ -416,27 +420,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "هیچ منبع محاوره ای سند تعریف و یا فعال نشده، قبل از ادامه دادن یک منبع بسازید." -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "فایلهای درون راه مرحله ای" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "سند جدیدی که در صف آپلود است بزودی قابل دسترس خواهد بود." @@ -445,65 +449,77 @@ msgstr "سند جدیدی که در صف آپلود است بزودی قابل msgid "Upload a local document from source: %s" msgstr "آپلود کردن فایل محلی از اصل:%s" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "نسخه سند جدید که جهت آپلود وارد صف شد بزودی قابل دسترس خواهد بود." -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "آپلود نسخه ای جدید از اصل : %s" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "ایجاد سورس جدید از نوع %s." -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "ویرایش اصل : %s" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "نوع" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "تصویر صفحه فایل مرحله ای" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "مرحله بعدی" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/fr/LC_MESSAGES/django.mo index 217c04ccdb..65e56d4698 100644 Binary files a/mayan/apps/sources/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/fr/LC_MESSAGES/django.po b/mayan/apps/sources/locale/fr/LC_MESSAGES/django.po index 301d826e7a..c17b29a7c6 100644 --- a/mayan/apps/sources/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/fr/LC_MESSAGES/django.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-05-23 20:06+0000\n" -"Last-Translator: Bruno CAPELETO \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,27 +22,27 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "Sources" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "Créer un document source" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "Les sources de document seront la façon pour lesquels les nouveaux documents seront suivis dans Mayan EDMS, créer par au moins un formulaire web pour téléverser le document depuis le navigateur" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "Créé" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "Vignette" @@ -66,7 +66,7 @@ msgstr "Décompresser les fichiers" msgid "Upload a compressed file's contained files as individual documents" msgstr "Importer le contenu d'un ensemble de fichiers compressés comme fichiers individuels" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "fichier en cours de modification" @@ -74,54 +74,58 @@ msgstr "fichier en cours de modification" msgid "File" msgstr "Fichier" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Défaut" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "Nouveau document" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "Ajouter un nouveau compte mail IMAP" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "Ajouter un nouveau compte mail POP3" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "Ajouter un nouveau répertoire d'indexation" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "Ajouter une nouvelle surveillance de dossier" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "Ajouter une nouvelle source de formulaire web" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "Supprimer" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "Modifier" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Sources du document" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "Importer une nouvelle version" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "Journaux évènement" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Toujours" @@ -158,7 +162,7 @@ msgstr "email IMAP" msgid "Label" msgstr "Libellé" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "Activé" @@ -419,27 +423,27 @@ msgstr "Erreur lors du traitement de la source: %s" msgid "Clear" msgstr "Effacer" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "Entrée du journal pour la source: %s" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "Aucune source de document interactifs n'a été définie ou/ni activée, créer en une avant de continuer." -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "Propriété du document" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "Fichiers dans l'index, en cours de modification" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "Nouveau document ajouter dans la file d'attente pour transfert et disponible dans les plus bref délai." @@ -448,65 +452,77 @@ msgstr "Nouveau document ajouter dans la file d'attente pour transfert et dispon msgid "Upload a local document from source: %s" msgstr "importer un document local à partir de la source: %s" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "L'ajout d'une nouvelle version pour le document \"%s\" est bloqué." -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "Une nouvelle version du document mis en fille d'attente pour importation qui sera disponible dans les plus brefs délai." -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "Importer une nouvelle version à partir de la source: %s" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Créer une nouvelle source de type:%s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "Supprimer la source: %s?" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "Modifier la source: %s" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "Type" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "Affichage sous forme d'image de la page de fichier" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "Etape 1 sur 3: Sélectionner le type du document" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "Etape 2 sur 3: Entrer les metadonnées" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "Etape 3 sur 3: Sélectionner les tags" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Prochaine étape" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "Assistant d'envoi de document" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/hu/LC_MESSAGES/django.mo index 902f61a8c6..08cb5655fd 100644 Binary files a/mayan/apps/sources/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/hu/LC_MESSAGES/django.po b/mayan/apps/sources/locale/hu/LC_MESSAGES/django.po index 1ffec0bb11..361c40ee92 100644 --- a/mayan/apps/sources/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/hu/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -19,27 +19,27 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "" @@ -63,7 +63,7 @@ msgstr "Tömörített fájlok kibontása" msgid "Upload a compressed file's contained files as individual documents" msgstr "Tömörített fájlokat feltöltése önálló dokumentumként" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "Átmeneti fájl" @@ -71,54 +71,58 @@ msgstr "Átmeneti fájl" msgid "File" msgstr "" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Dokumentum források" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Mindig" @@ -155,7 +159,7 @@ msgstr "" msgid "Label" msgstr "" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "" @@ -416,27 +420,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -445,65 +449,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Következő lépés" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/id/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/id/LC_MESSAGES/django.mo index eb8f82deb9..0d6927f486 100644 Binary files a/mayan/apps/sources/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/id/LC_MESSAGES/django.po b/mayan/apps/sources/locale/id/LC_MESSAGES/django.po index acadcb0714..aa4ddb1cb8 100644 --- a/mayan/apps/sources/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/id/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -19,27 +19,27 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "" @@ -63,7 +63,7 @@ msgstr "Kembangkan berkas-berkas terkompresi" msgid "Upload a compressed file's contained files as individual documents" msgstr "Unggah berkas terkompresi yang mengandung berkas-berkas sebagai dokumen-dokumen individual" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "" @@ -71,54 +71,58 @@ msgstr "" msgid "File" msgstr "File" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Sumber-sumber dokumen" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Selalu" @@ -155,7 +159,7 @@ msgstr "" msgid "Label" msgstr "" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "" @@ -416,27 +420,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -445,65 +449,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Membuat sumber baru dengan jenis: %s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Langkah selanjutnya" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/it/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/it/LC_MESSAGES/django.mo index f6706e49df..b787968757 100644 Binary files a/mayan/apps/sources/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/it/LC_MESSAGES/django.po b/mayan/apps/sources/locale/it/LC_MESSAGES/django.po index 445c620dae..440d687c6c 100644 --- a/mayan/apps/sources/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/it/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-09-24 13:19+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,27 +21,27 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "Sorgenti" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "Crea una sorgente documento" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "Sorgenti documento è il mezzo con cui i nuovi documenti alimentano Mayan EDMS, crea almeno una modulo web per poter caricare documenti da un browser." -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "Creato" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "Miniatura" @@ -65,7 +65,7 @@ msgstr "Espandi" msgid "Upload a compressed file's contained files as individual documents" msgstr "Pubblicare un file compresso contenente singoli documenti" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "Mostra file" @@ -73,54 +73,58 @@ msgstr "Mostra file" msgid "File" msgstr "File" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Default" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "Nuovo documento" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "Aggiungi nuova email IMAP" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "Aggiungi nuova Email POP3" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "Aggiungi una nuova cartella di stage" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "Aggiungi una nuova cartella monitorata" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "Aggiungi nuova sorgente webform" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "Cancella" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "Modifica" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Sorgente del documento" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "Carica nuova versione" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "Log" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Sempre" @@ -157,7 +161,7 @@ msgstr "Email IMAP" msgid "Label" msgstr "Etichetta" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "Abilitato" @@ -418,27 +422,27 @@ msgstr "Errore processando la sorgente: %s" msgid "Clear" msgstr "Pulisci" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "Log per la sorgente: %s" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "Nessuna fonte interattiva dei documenti è stata definita o non ne sono state attivate." -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "Proprietà documento" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "File nel percorso di stage" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "Il nuovo documento pronto in coda per il carico e sarà disponibile a breve." @@ -447,65 +451,77 @@ msgstr "Il nuovo documento pronto in coda per il carico e sarà disponibile a br msgid "Upload a local document from source: %s" msgstr "Carica un documento locale dalla sorgente: %s" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "Il documento \"%s\" è bloccato per il caricamento di nuove versioni." -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "La nuova versione del documento è in coda per il caricamento e sarà disponibile a breve." -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "Carica la nuova versione dalla sorgente: %s" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Crea nuovo tipo di sorgente:%s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "Cancellare la sorgente: %s?" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "Modifica sorgente: %s" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "Tipo" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "Immagine pagina file di stage" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "Passo 1 di 3: Seleziona il tipo documento" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "Passo 2 di 3: Inserisci i metadati del documento" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "Passo 3 di 3: Seleziona i tag" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Prossimo passo " -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "Procedura guidata carico documenti" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/nl_NL/LC_MESSAGES/django.mo index 7eec5fe13c..b95e9f66fc 100644 Binary files a/mayan/apps/sources/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/sources/locale/nl_NL/LC_MESSAGES/django.po index 0d55ab1878..9fd3436086 100644 --- a/mayan/apps/sources/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/nl_NL/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-09 15:57+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,27 +20,27 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "Bronnen" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "Maak een documentbron aan" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "Aangemaakt" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "Thumbnail" @@ -64,7 +64,7 @@ msgstr "Uitpakken gecomprimeerde bestanden" msgid "Upload a compressed file's contained files as individual documents" msgstr "Upload een gecomprimeerd archief van bestanden als individuele documenten" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "Tijdelijk bestand" @@ -72,54 +72,58 @@ msgstr "Tijdelijk bestand" msgid "File" msgstr "Bestand" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Verstekwaarde" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "Nieuw document" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "Voeg nieuwe IMAP-email toe." -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "Verwijder" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "bewerken" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Documentbronnen" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "Nieuwe versie uploaden" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "Logs" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Altijd" @@ -156,7 +160,7 @@ msgstr "IMAP e-mail" msgid "Label" msgstr "Label" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "Ingeschakeld" @@ -417,27 +421,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -446,65 +450,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Aanmaken van nieuw documentbron van type: %s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "Type" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Volgende stap" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/pl/LC_MESSAGES/django.mo index 873139386b..79ec62e1fb 100644 Binary files a/mayan/apps/sources/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/pl/LC_MESSAGES/django.po b/mayan/apps/sources/locale/pl/LC_MESSAGES/django.po index 888e95601b..dbc0768a8f 100644 --- a/mayan/apps/sources/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/pl/LC_MESSAGES/django.po @@ -11,37 +11,37 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-23 13:44+0000\n" -"Last-Translator: Wojtek Warczakowski \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "Utworzony" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "Miniaturka" @@ -65,7 +65,7 @@ msgstr "" msgid "Upload a compressed file's contained files as individual documents" msgstr "" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "" @@ -73,54 +73,58 @@ msgstr "" msgid "File" msgstr "Plik" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Domyślne" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "Nowy dokument" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "Usuń" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "Edytuj" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "Prześlij nową wersję" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Zawsze" @@ -157,7 +161,7 @@ msgstr "" msgid "Label" msgstr "Etykieta" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "Włączone" @@ -418,27 +422,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "Właściwości dokumentu" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -447,65 +451,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Utwórz nowe typ źródło:%s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "Typ" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "Krok 1 z 3: Wybierz typ dokumentu" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "Krok 2 z 3: Wprowadź metadane dokumentu" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "Krok 3 z 3: Wybierz tagi" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Następny krok" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "Kreator przesyłania dokumentu" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/pt/LC_MESSAGES/django.mo index 3c42f755c6..a99fde1705 100644 Binary files a/mayan/apps/sources/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/pt/LC_MESSAGES/django.po b/mayan/apps/sources/locale/pt/LC_MESSAGES/django.po index f51f73f634..6ad30c67cb 100644 --- a/mayan/apps/sources/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/pt/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -21,27 +21,27 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "" @@ -65,7 +65,7 @@ msgstr "Expandir ficheiros comprimidos" msgid "Upload a compressed file's contained files as individual documents" msgstr "Enviar os ficheiros contidos num ficheiro comprimido como documentos individuais" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "Ficheiro de preparação" @@ -73,54 +73,58 @@ msgstr "Ficheiro de preparação" msgid "File" msgstr "Ficheiro" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Padrão" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "Eliminar" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "Editar" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Fontes de documentoo" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Sempre" @@ -157,7 +161,7 @@ msgstr "" msgid "Label" msgstr "Nome" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "" @@ -418,27 +422,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -447,65 +451,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Criar nova fonte do tipo: %s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Próximo passo" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/pt_BR/LC_MESSAGES/django.mo index 56c4810ca7..89fb6a254f 100644 Binary files a/mayan/apps/sources/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/sources/locale/pt_BR/LC_MESSAGES/django.po index 043157c177..3683b48aec 100644 --- a/mayan/apps/sources/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/pt_BR/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-17 23:07+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,27 +21,27 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "Fontes" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "Criar uma nova fonte de documentos" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "Fontes de documentos são a forma como os novos documentos são alimentados ao Mayan EDMS, crie pelo menos uma fonte de formulário da web para poder carregar documentos a partir de um navegador." -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "Criando" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "miniatura" @@ -65,7 +65,7 @@ msgstr "Expandir arquivos compactados" msgid "Upload a compressed file's contained files as individual documents" msgstr "Upload de um arquivo compactado contendo arquivos como documentos individuais" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "Preparação de arquivo" @@ -73,54 +73,58 @@ msgstr "Preparação de arquivo" msgid "File" msgstr "Arquivo" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Padrão" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "Novo documento" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "Adicionar um novo email IMAP" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "Adicionar um novo email POP3" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "Adicionar nova pasta de teste" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "Adicionar uma nova pasta temporária" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "Adicionar nova fonte webform" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "Excluir" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "Editar" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Fontes de documentos" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "Upload de uma nova versão" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "Logs" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Sempre" @@ -157,7 +161,7 @@ msgstr "E-mail IMAP" msgid "Label" msgstr "Label" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "habilitado" @@ -418,27 +422,27 @@ msgstr "Erro processando fonte: %s" msgid "Clear" msgstr "Limpar" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "Registrar entradas para fonte: %s" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "Nenhuma fonte interativa de documentos fora definida ou nenhum foi ativada. Criar uma antes de prosseguir." -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "Propriedades do documento" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "Os arquivos no caminho de preparo" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "Novo documento na fila para carregados e estará disponível em breve." @@ -447,65 +451,77 @@ msgstr "Novo documento na fila para carregados e estará disponível em breve." msgid "Upload a local document from source: %s" msgstr "Carregar um documento no local de origem:%s " -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "Documento \"%s\" está bloqueado para carregar novas versões." -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "Nova versão do documento na fila para carregados e estará disponível em breve." -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "Carregar uma nova versão da Origem: %s" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Criar nova fonte do tipo: %s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "Apagar a fonte: %s?" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "Editar fonte: %s" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "Tipo" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "Imagem da página do arquivo temporário" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "Passo 1 de 3: Selecione o tipo de documento" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "Passo 2 de 3: Insira metadados do documento" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "Passo 3 de 3: Selecione etiquetas" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Próximo passo" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "Assistente de upload de documentos" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/ro_RO/LC_MESSAGES/django.mo index 81a74e86cc..c4936b8196 100644 Binary files a/mayan/apps/sources/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/sources/locale/ro_RO/LC_MESSAGES/django.po index 3ce1f3146d..822431bf29 100644 --- a/mayan/apps/sources/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/ro_RO/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-04-17 13:16+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -20,27 +20,27 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "Iconiță" @@ -64,7 +64,7 @@ msgstr "Dezarhivare fișiere comprimate" msgid "Upload a compressed file's contained files as individual documents" msgstr "Încărcați fișiere de fișier comprimat care sunt incluse ca documente individuale" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "Structura fisier" @@ -72,54 +72,58 @@ msgstr "Structura fisier" msgid "File" msgstr "Fișier" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Iniţial" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "Șterge" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "Editează" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Sursa documentului" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Mereu" @@ -156,7 +160,7 @@ msgstr "" msgid "Label" msgstr "Etichetă" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "" @@ -417,27 +421,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -446,65 +450,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Creați o nouă sursă de tipul:% s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "Tip" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Următorul pas" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/ru/LC_MESSAGES/django.mo index 187874981d..ddf1972911 100644 Binary files a/mayan/apps/sources/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/ru/LC_MESSAGES/django.po b/mayan/apps/sources/locale/ru/LC_MESSAGES/django.po index bc8fe338a7..47f44fd483 100644 --- a/mayan/apps/sources/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/ru/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-02 04:15+0000\n" -"Last-Translator: lilo.panic\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,27 +19,27 @@ msgstr "" "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" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "Источники" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "Создать источник документов" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "Источники документов - это способы получения Mayan EDMS новых документов. Как минимум, чтобы можно было загружать документы из браузера, создайте веб-форму." -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "Создано" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "Миниатюра" @@ -63,7 +63,7 @@ msgstr "Извлекать из архивов?" msgid "Upload a compressed file's contained files as individual documents" msgstr "Загрузить файлы, содержащиеся в архиве в качестве отдельных документов" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "Промежуточный файл" @@ -71,54 +71,58 @@ msgstr "Промежуточный файл" msgid "File" msgstr "Файл" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Умолчание" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "Новый документ" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "Удалить" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "Редактировать" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Источники документов" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "Загрузить новую версию" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "Журналы" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Всегда" @@ -155,7 +159,7 @@ msgstr "почтовый ящик IMAP" msgid "Label" msgstr "Надпись" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "Доступно" @@ -416,27 +420,27 @@ msgstr "Ошибка обработки источника: %s" msgid "Clear" msgstr "Очистить" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "Записи журнала для источника: %s" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "Интерактивные источники документов не были определены или включены, создайте один для продолжения." -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "Свойства документа" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -445,65 +449,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "Загрузка новой версии из источника %s" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "Создать новый источник типа: %s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "Тип" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "Шаг 1 из 3: Выбор типа документа" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "Шаг 2 из 3: Заполните метаданные документа" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "Шаг 3 из 3%: выберите метки" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Далее" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "Мастер загрузки документов" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/sl_SI/LC_MESSAGES/django.mo index 150b9feeda..c686ee9ec4 100644 Binary files a/mayan/apps/sources/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/sources/locale/sl_SI/LC_MESSAGES/django.po index 8c9c5da189..fa14bf8ba2 100644 --- a/mayan/apps/sources/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-11-17 08:59+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,27 +18,27 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "" @@ -62,7 +62,7 @@ msgstr "" msgid "Upload a compressed file's contained files as individual documents" msgstr "" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "" @@ -70,54 +70,58 @@ msgstr "" msgid "File" msgstr "" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "" @@ -154,7 +158,7 @@ msgstr "" msgid "Label" msgstr "Oznaka" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "" @@ -415,27 +419,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -444,65 +448,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Naslednji korak" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/vi_VN/LC_MESSAGES/django.mo index 7b8f2cbe10..1f00d9c6c8 100644 Binary files a/mayan/apps/sources/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/sources/locale/vi_VN/LC_MESSAGES/django.po index 252393531c..fc6a2648f8 100644 --- a/mayan/apps/sources/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/vi_VN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -19,27 +19,27 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "" @@ -63,7 +63,7 @@ msgstr "Giải nén" msgid "Upload a compressed file's contained files as individual documents" msgstr "Upload một file nén chứa các file tài liệu riêng biệt" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "" @@ -71,54 +71,58 @@ msgstr "" msgid "File" msgstr "File" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "Mặc định" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "Sửa" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "Các nguồn tài liệu" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "Luôn luôn" @@ -155,7 +159,7 @@ msgstr "" msgid "Label" msgstr "" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "" @@ -416,27 +420,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -445,65 +449,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "Bước tiếp theo" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/sources/locale/zh_CN/LC_MESSAGES/django.mo index 0f42b2b457..62599ac0ff 100644 Binary files a/mayan/apps/sources/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/sources/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/sources/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/sources/locale/zh_CN/LC_MESSAGES/django.po index fe5203d4a6..6720a40477 100644 --- a/mayan/apps/sources/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/sources/locale/zh_CN/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:56-0400\n" -"PO-Revision-Date: 2016-03-21 21:11+0000\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" +"PO-Revision-Date: 2017-04-21 16:26+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -20,27 +20,27 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:37 links.py:31 models.py:145 views.py:521 +#: apps.py:38 links.py:35 models.py:145 views.py:543 msgid "Sources" msgstr "" -#: apps.py:53 +#: apps.py:54 #| msgid "Create new document sources" msgid "Create a document source" msgstr "" -#: apps.py:55 +#: apps.py:56 msgid "" "Document sources are the way in which new documents are feed to Mayan EDMS, " "create at least a web form source to be able to upload documents from a " "browser." msgstr "" -#: apps.py:65 +#: apps.py:66 msgid "Created" msgstr "" -#: apps.py:71 +#: apps.py:73 msgid "Thumbnail" msgstr "" @@ -64,7 +64,7 @@ msgstr "展开压缩文件" msgid "Upload a compressed file's contained files as individual documents" msgstr "上传一个压缩文件的包含文件作为单个文档" -#: forms.py:67 views.py:432 +#: forms.py:67 views.py:431 msgid "Staging file" msgstr "临时文件" @@ -72,54 +72,58 @@ msgstr "临时文件" msgid "File" msgstr "文件" -#: handlers.py:14 +#: handlers.py:16 msgid "Default" msgstr "" -#: links.py:26 +#: links.py:30 msgid "New document" msgstr "" -#: links.py:35 +#: links.py:39 msgid "Add new IMAP email" msgstr "" -#: links.py:40 +#: links.py:44 msgid "Add new POP3 email" msgstr "" -#: links.py:45 +#: links.py:49 msgid "Add new staging folder" msgstr "" -#: links.py:50 +#: links.py:54 msgid "Add new watch folder" msgstr "" -#: links.py:55 +#: links.py:59 msgid "Add new webform source" msgstr "" -#: links.py:60 links.py:74 +#: links.py:64 links.py:78 msgid "Delete" msgstr "" -#: links.py:64 +#: links.py:68 msgid "Edit" msgstr "" -#: links.py:68 +#: links.py:72 msgid "Document sources" msgstr "文档数据源" -#: links.py:80 +#: links.py:84 msgid "Upload new version" msgstr "" -#: links.py:83 +#: links.py:87 msgid "Logs" msgstr "" +#: links.py:91 +msgid "Check now" +msgstr "" + #: literals.py:10 literals.py:15 msgid "Always" msgstr "总是" @@ -156,7 +160,7 @@ msgstr "" msgid "Label" msgstr "" -#: models.py:49 views.py:514 +#: models.py:49 views.py:536 msgid "Enabled" msgstr "" @@ -417,27 +421,27 @@ msgstr "" msgid "Clear" msgstr "" -#: views.py:64 +#: views.py:63 #, python-format msgid "Log entries for source: %s" msgstr "" -#: views.py:129 wizards.py:49 +#: views.py:128 wizards.py:52 msgid "" "No interactive document sources have been defined or none have been enabled," " create one before proceeding." msgstr "" -#: views.py:155 views.py:173 +#: views.py:154 views.py:172 #| msgid "Document sources" msgid "Document properties" msgstr "" -#: views.py:163 +#: views.py:162 msgid "Files in staging path" msgstr "" -#: views.py:262 +#: views.py:256 msgid "New document queued for uploaded and will be available shortly." msgstr "" @@ -446,65 +450,77 @@ msgstr "" msgid "Upload a local document from source: %s" msgstr "" -#: views.py:327 +#: views.py:331 #, python-format msgid "Document \"%s\" is blocked from uploading new versions." msgstr "" -#: views.py:381 +#: views.py:380 msgid "" "New document version queued for uploaded and will be available shortly." msgstr "" -#: views.py:419 +#: views.py:418 #, python-format msgid "Upload a new version from source: %s" msgstr "" -#: views.py:460 +#: views.py:458 +#, python-format +msgid "Trigger check for source \"%s\"?" +msgstr "" + +#: views.py:471 +msgid "Source check queued." +msgstr "" + +#: views.py:485 #, python-format msgid "Create new source of type: %s" msgstr "新建数据源类型:%s" -#: views.py:480 +#: views.py:505 #, python-format #| msgid "Delete document sources" msgid "Delete the source: %s?" msgstr "" -#: views.py:499 +#: views.py:524 #, python-format msgid "Edit source: %s" msgstr "" -#: views.py:510 +#: views.py:532 msgid "Type" msgstr "" -#: widgets.py:26 -msgid "Staging file page image" -msgstr "" - -#: wizards.py:38 +#: wizards.py:41 msgid "Step 1 of 3: Select document type" msgstr "" -#: wizards.py:39 +#: wizards.py:42 msgid "Step 2 of 3: Enter document metadata" msgstr "" -#: wizards.py:40 +#: wizards.py:43 msgid "Step 3 of 3: Select tags" msgstr "" -#: wizards.py:66 +#: wizards.py:69 msgid "Next step" msgstr "下一步" -#: wizards.py:68 +#: wizards.py:71 msgid "Document upload wizard" msgstr "" +#: wizards.py:98 +msgid "Tags to be attached." +msgstr "" + +#~ msgid "Staging file page image" +#~ msgstr "Staging file" + #~ msgid "Staging file delete successfully." #~ msgstr "Staging file delete successfully." diff --git a/mayan/apps/sources/models.py b/mayan/apps/sources/models.py index 5b7661a89a..234a4b985a 100644 --- a/mayan/apps/sources/models.py +++ b/mayan/apps/sources/models.py @@ -268,6 +268,21 @@ class SaneScanner(InteractiveSource): class StagingFolderSource(InteractiveSource): + """ + The Staging folder source is interactive but instead of displaying an + HTML form (like the Webform source) that allows users to freely choose a + file from their computers, shows a list of files from a filesystem folder. + When creating staging folders administrators choose a folder in the same + machine where Mayan is installed. This folder is then used as the + destination location of networked scanners or multifunctional copiers. + The scenario for staging folders is as follows: An user walks up to the + networked copier, scan several papers documents, returns to their + computer, open Mayan, select to upload a new document but choose the + previously defined staging folder source, now they see the list of + documents with a small preview and can proceed to process one by one and + convert the scanned files into Mayan EDMS documents. Staging folders are + useful when many users share a few networked scanners. + """ can_compress = True is_interactive = True source_type = SOURCE_CHOICE_STAGING @@ -349,6 +364,14 @@ class StagingFolderSource(InteractiveSource): class WebFormSource(InteractiveSource): + """ + The webform source is an HTML form with a drag and drop window that opens + a file browser on the user's computer. This Source is interactive, meaning + users control live what documents they want to upload. This source is + useful when admins want to allow users to upload any kind of file as + documents from their own computers such as when each user has their own + scanner. + """ can_compress = True is_interactive = True source_type = SOURCE_CHOICE_WEB_FORM @@ -447,6 +470,15 @@ class IntervalBaseModel(OutOfProcessSource): class EmailBaseModel(IntervalBaseModel): + """ + POP3 email and IMAP email sources are non-interactive sources that + periodically fetch emails from an email account using either the POP3 or + IMAP email protocol. These sources are useful when users need to scan + documents outside their office, they can photograph a paper document with + their phones and send the image to a designated email that is setup as a + Mayan POP3 or IMAP source. Mayan will periodically download the emails + and process them as Mayan documents. + """ host = models.CharField(max_length=128, verbose_name=_('Host')) ssl = models.BooleanField(default=True, verbose_name=_('SSL')) port = models.PositiveIntegerField(blank=True, null=True, help_text=_( @@ -688,6 +720,16 @@ class IMAPEmail(EmailBaseModel): class WatchFolderSource(IntervalBaseModel): + """ + The watch folder is another non-interactive source that like the email + source, works by periodically checking and processing documents. This + source instead of using an email account, monitors a filesystem folder. + Administrators can define watch folders, examples /home/mayan/watch_bills + or /home/mayan/watch_invoices and users just need to copy the documents + they want to upload as a bill or invoice to the respective filesystem + folder. Mayan will periodically scan these filesystem locations and + upload the files as documents, deleting them if configured. + """ source_type = SOURCE_CHOICE_WATCH folder_path = models.CharField( diff --git a/mayan/apps/sources/urls.py b/mayan/apps/sources/urls.py index c096f6ea10..01f41a7b68 100644 --- a/mayan/apps/sources/urls.py +++ b/mayan/apps/sources/urls.py @@ -7,9 +7,9 @@ from .api_views import ( APIStagingSourceListView, APIStagingSourceView ) from .views import ( - SetupSourceCreateView, SetupSourceDeleteView, SetupSourceEditView, - SetupSourceListView, SourceLogListView, StagingFileDeleteView, - UploadInteractiveVersionView, UploadInteractiveView + SetupSourceCheckView, SetupSourceCreateView, SetupSourceDeleteView, + SetupSourceEditView, SetupSourceListView, SourceLogListView, + StagingFileDeleteView, UploadInteractiveVersionView, UploadInteractiveView ) from .wizards import DocumentCreateWizard @@ -59,6 +59,10 @@ urlpatterns = [ r'^setup/(?P\w+)/create/$', SetupSourceCreateView.as_view(), name='setup_source_create' ), + url( + r'^setup/(?P\d+)/check/$', SetupSourceCheckView.as_view(), + name='setup_source_check' + ), # Document create views diff --git a/mayan/apps/sources/views.py b/mayan/apps/sources/views.py index d1e1c273e7..bcbe9056c9 100644 --- a/mayan/apps/sources/views.py +++ b/mayan/apps/sources/views.py @@ -12,8 +12,8 @@ from common import menu_facet from common.models import SharedUploadedFile from common.utils import encapsulate from common.views import ( - MultiFormView, SingleObjectCreateView, SingleObjectDeleteView, - SingleObjectEditView, SingleObjectListView + ConfirmView, MultiFormView, SingleObjectCreateView, + SingleObjectDeleteView, SingleObjectEditView, SingleObjectListView ) from common.widgets import two_state_template from documents.models import DocumentType, Document @@ -37,7 +37,7 @@ from .permissions import ( permission_sources_setup_edit, permission_sources_setup_view, permission_staging_file_delete ) -from .tasks import task_source_handle_upload +from .tasks import task_check_interval_source, task_source_handle_upload from .utils import get_class, get_form_class, get_upload_form_class @@ -233,18 +233,20 @@ class UploadInteractiveView(UploadBaseView): except Exception as exception: messages.error(self.request, exception) - task_source_handle_upload.apply_async(kwargs=dict( - description=forms['document_form'].cleaned_data.get('description'), - document_type_id=self.document_type.pk, - expand=expand, - label=label, - language=forms['document_form'].cleaned_data.get('language'), - metadata_dict_list=decode_metadata_from_url(self.request.GET), - shared_uploaded_file_id=shared_uploaded_file.pk, - source_id=self.source.pk, - tag_ids=self.request.GET.getlist('tags'), - user_id=user_id, - )) + task_source_handle_upload.apply_async( + kwargs=dict( + description=forms['document_form'].cleaned_data.get('description'), + document_type_id=self.document_type.pk, + expand=expand, + label=label, + language=forms['document_form'].cleaned_data.get('language'), + metadata_dict_list=decode_metadata_from_url(self.request.GET), + shared_uploaded_file_id=shared_uploaded_file.pk, + source_id=self.source.pk, + tag_ids=self.request.GET.getlist('tags'), + user_id=user_id, + ) + ) messages.success( self.request, _( @@ -253,7 +255,12 @@ class UploadInteractiveView(UploadBaseView): ) ) - return HttpResponseRedirect(self.request.get_full_path()) + return HttpResponseRedirect( + '{}?{}'.format( + reverse(self.request.resolver_match.view_name), + self.request.META['QUERY_STRING'] + ), + ) def create_source_form_form(self, **kwargs): if hasattr(self.source, 'uncompress'): @@ -297,7 +304,10 @@ class UploadInteractiveView(UploadBaseView): if not isinstance(self.source, StagingFolderSource) and not isinstance(self.source, SaneScanner): context['subtemplates_list'][0]['context'].update( { - 'form_action': self.request.get_full_path(), + 'form_action': '{}?{}'.format( + reverse(self.request.resolver_match.view_name), + self.request.META['QUERY_STRING'] + ), 'form_class': 'dropzone', 'form_disable_submit': True, 'form_id': 'html5upload', @@ -313,6 +323,7 @@ class UploadInteractiveVersionView(UploadBaseView): self.document = get_object_or_404(Document, pk=kwargs['document_pk']) + # TODO: Try to remove this new version block check from here if NewVersionBlock.objects.is_blocked(self.document): messages.error( self.request, @@ -438,6 +449,32 @@ class StagingFileDeleteView(SingleObjectDeleteView): # Setup views +class SetupSourceCheckView(ConfirmView): + """ + Trigger the task_check_interval_source task for a given source to + test/debug their configuration irrespective of the schedule task setup. + """ + view_permission = permission_sources_setup_view + + def get_extra_context(self): + return { + 'object': self.get_object(), + 'title': _('Trigger check for source "%s"?') % self.get_object(), + } + + def get_object(self): + return get_object_or_404(Source.objects.select_subclasses(), pk=self.kwargs['pk']) + + def view_action(self): + task_check_interval_source.apply_async( + kwargs={ + 'source_id': self.get_object().pk + } + ) + + messages.success(self.request, _('Source check queued.')) + + class SetupSourceCreateView(SingleObjectCreateView): post_action_redirect = reverse_lazy('sources:setup_source_list') view_permission = permission_sources_setup_create @@ -493,9 +530,6 @@ class SetupSourceEditView(SingleObjectEditView): class SetupSourceListView(SingleObjectListView): - view_permission = permission_sources_setup_view - queryset = Source.objects.select_subclasses() - extra_context = { 'extra_columns': ( { @@ -512,3 +546,5 @@ class SetupSourceListView(SingleObjectListView): 'hide_link': True, 'title': _('Sources'), } + queryset = Source.objects.select_subclasses() + view_permission = permission_sources_setup_view diff --git a/mayan/apps/statistics/apps.py b/mayan/apps/statistics/apps.py index ba0f36b43f..d0909ad7c4 100644 --- a/mayan/apps/statistics/apps.py +++ b/mayan/apps/statistics/apps.py @@ -19,8 +19,8 @@ from .tasks import task_execute_statistic # NOQA - Force registration of task class StatisticsApp(MayanAppConfig): + has_tests = True name = 'statistics' - test = True verbose_name = _('Statistics') def ready(self): diff --git a/mayan/apps/statistics/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/ar/LC_MESSAGES/django.mo index 672822fbee..3086bdff32 100644 Binary files a/mayan/apps/statistics/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/ar/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/ar/LC_MESSAGES/django.po index a3f0cc2abf..82642815c9 100644 --- a/mayan/apps/statistics/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/ar/LC_MESSAGES/django.po @@ -1,22 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Mohammed ALDOUB , 2013 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/" +"ar/)\n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" #: apps.py:24 links.py:28 permissions.py:7 msgid "Statistics" @@ -24,7 +26,7 @@ msgstr "إحصائيات" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "" diff --git a/mayan/apps/statistics/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/bg/LC_MESSAGES/django.mo index 26274c7e27..25c2c640b4 100644 Binary files a/mayan/apps/statistics/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/bg/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/bg/LC_MESSAGES/django.po index 0f4cea307c..8635250034 100644 --- a/mayan/apps/statistics/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/bg/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Iliya Georgiev , 2012 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" +"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -24,7 +25,7 @@ msgstr "Статистика" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "" diff --git a/mayan/apps/statistics/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/bs_BA/LC_MESSAGES/django.mo index d88811ab0a..cc4c951186 100644 Binary files a/mayan/apps/statistics/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/bs_BA/LC_MESSAGES/django.po index eb470c7b54..d3c3b541ae 100644 --- a/mayan/apps/statistics/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/bs_BA/LC_MESSAGES/django.po @@ -1,22 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # www.ping.ba , 2013 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" +"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/" +"rosarior/mayan-edms/language/bs_BA/)\n" +"Language: bs_BA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bs_BA\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" +"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" #: apps.py:24 links.py:28 permissions.py:7 msgid "Statistics" @@ -24,7 +26,7 @@ msgstr "Statistika" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "" diff --git a/mayan/apps/statistics/locale/da/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/da/LC_MESSAGES/django.mo index 34f06b0ae1..ad895919f2 100644 Binary files a/mayan/apps/statistics/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/da/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/da/LC_MESSAGES/django.po index ec47a54150..517664da89 100644 --- a/mayan/apps/statistics/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/da/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Mads L. Nielsen , 2013 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" +"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/" +"da/)\n" +"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -24,7 +25,7 @@ msgstr "Statistik" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "" diff --git a/mayan/apps/statistics/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/de_DE/LC_MESSAGES/django.mo index 2656da7e0b..d254635293 100644 Binary files a/mayan/apps/statistics/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/de_DE/LC_MESSAGES/django.po index 0e1eb1f3f8..12e77f2736 100644 --- a/mayan/apps/statistics/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/de_DE/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Berny , 2015 # Mathias Behrle , 2014 @@ -10,14 +10,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Mathias Behrle \n" -"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" +"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -26,7 +27,7 @@ msgstr "Statistiken" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "Plan" diff --git a/mayan/apps/statistics/locale/en/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/en/LC_MESSAGES/django.mo index f1fa87dd04..2a49b9eccb 100644 Binary files a/mayan/apps/statistics/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/en/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/en/LC_MESSAGES/django.po index 56b621f2bb..821888df12 100644 --- a/mayan/apps/statistics/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -23,7 +23,7 @@ msgstr "" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "" diff --git a/mayan/apps/statistics/locale/es/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/es/LC_MESSAGES/django.mo index fa9d1583be..51966ce303 100644 Binary files a/mayan/apps/statistics/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/es/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/es/LC_MESSAGES/django.po index 01e6577cec..fe0d4466ba 100644 --- a/mayan/apps/statistics/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/es/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Lory977 , 2015 # Roberto Rosario, 2014 @@ -10,14 +10,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:23+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -26,7 +27,7 @@ msgstr "Estadísticas" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "Programa" diff --git a/mayan/apps/statistics/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/fa/LC_MESSAGES/django.mo index d65858ad27..a66ac4a11f 100644 Binary files a/mayan/apps/statistics/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/fa/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/fa/LC_MESSAGES/django.po index 267d8a8785..a5edf31980 100644 --- a/mayan/apps/statistics/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/fa/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Mehdi Amani , 2014 # Mohammad Dashtizadeh , 2013 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/" +"language/fa/)\n" +"Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -25,7 +26,7 @@ msgstr "آمار" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "" diff --git a/mayan/apps/statistics/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/fr/LC_MESSAGES/django.mo index 2245b13036..00d0506d69 100644 Binary files a/mayan/apps/statistics/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/fr/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/fr/LC_MESSAGES/django.po index 1f00d53b03..6ee6974e21 100644 --- a/mayan/apps/statistics/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/fr/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Pierre Lhoste , 2012 # Thierry Schott , 2016 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Thierry Schott \n" -"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" +"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/" +"fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -25,7 +26,7 @@ msgstr "Statistiques" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "Planification" diff --git a/mayan/apps/statistics/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/hu/LC_MESSAGES/django.mo index 291819e27c..e8f72c34a4 100644 Binary files a/mayan/apps/statistics/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/hu/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/hu/LC_MESSAGES/django.po index 0b0b18df86..0a3eea6a70 100644 --- a/mayan/apps/statistics/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/hu/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Dezső József , 2013 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" +"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/hu/)\n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -24,7 +25,7 @@ msgstr "Statisztika" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "" diff --git a/mayan/apps/statistics/locale/id/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/id/LC_MESSAGES/django.mo index a4c41cc528..7327c395fd 100644 Binary files a/mayan/apps/statistics/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/id/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/id/LC_MESSAGES/django.po index 1cf0504186..fc217980dc 100644 --- a/mayan/apps/statistics/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/id/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Sehat , 2013 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" +"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/" +"language/id/)\n" +"Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -24,7 +25,7 @@ msgstr "Statistik-statistik" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "" diff --git a/mayan/apps/statistics/locale/it/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/it/LC_MESSAGES/django.mo index 6676cb110e..dd776df804 100644 Binary files a/mayan/apps/statistics/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/it/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/it/LC_MESSAGES/django.po index c169cd9b98..be1b2fdfb3 100644 --- a/mayan/apps/statistics/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/it/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Giovanni Tricarico , 2016 # Marco Camplese , 2016 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-09-24 10:01+0000\n" "Last-Translator: Marco Camplese \n" -"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" +"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -25,7 +26,7 @@ msgstr "Statistiche " #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "Programma " diff --git a/mayan/apps/statistics/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/nl_NL/LC_MESSAGES/django.mo index a93b512aaa..8073864999 100644 Binary files a/mayan/apps/statistics/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/nl_NL/LC_MESSAGES/django.po index ef3ef753ce..50a7ae81b4 100644 --- a/mayan/apps/statistics/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/nl_NL/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Evelijn Saaltink , 2016 # Lucas Weel , 2012 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-11-09 16:41+0000\n" "Last-Translator: Evelijn Saaltink \n" -"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-" +"edms/language/nl_NL/)\n" +"Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -25,7 +26,7 @@ msgstr "Statistiek" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "Schema" diff --git a/mayan/apps/statistics/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/pl/LC_MESSAGES/django.mo index 067786d37a..b551c8b55f 100644 Binary files a/mayan/apps/statistics/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/pl/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/pl/LC_MESSAGES/django.po index 7a2c9ae962..c7818e0de6 100644 --- a/mayan/apps/statistics/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/pl/LC_MESSAGES/django.po @@ -1,22 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Wojtek Warczakowski , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Wojtek Warczakowski \n" -"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" +"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/" +"pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" #: apps.py:24 links.py:28 permissions.py:7 msgid "Statistics" @@ -24,7 +26,7 @@ msgstr "Statystyki" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "Harmonogram" diff --git a/mayan/apps/statistics/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/pt/LC_MESSAGES/django.mo index 45e6e7b5e4..95c81d4e53 100644 Binary files a/mayan/apps/statistics/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/pt/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/pt/LC_MESSAGES/django.po index 06ad1b0ba4..ca5ff735a4 100644 --- a/mayan/apps/statistics/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/pt/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Manuela Silva , 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Manuela Silva \n" -"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -24,7 +25,7 @@ msgstr "Estatísticas" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "Agenda" diff --git a/mayan/apps/statistics/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/pt_BR/LC_MESSAGES/django.mo index f84fc839f9..0d0151f33f 100644 Binary files a/mayan/apps/statistics/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/pt_BR/LC_MESSAGES/django.po index f0f3d14b3b..7f42309f14 100644 --- a/mayan/apps/statistics/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/pt_BR/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Aline Freitas , 2016 # Rogerio Falcone , 2015 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-11-17 23:07+0000\n" "Last-Translator: Aline Freitas \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-" +"edms/language/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -25,7 +26,7 @@ msgstr "Estatísticas" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "Programação" diff --git a/mayan/apps/statistics/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/ro_RO/LC_MESSAGES/django.mo index d6a402985a..5e247ba76a 100644 Binary files a/mayan/apps/statistics/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/ro_RO/LC_MESSAGES/django.po index 1660cf993b..e2f99d62d6 100644 --- a/mayan/apps/statistics/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/ro_RO/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Badea Gabriel , 2013 # Stefaniu Criste , 2016 @@ -9,15 +9,17 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-04-17 12:06+0000\n" "Last-Translator: Stefaniu Criste \n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-" +"edms/language/ro_RO/)\n" +"Language: ro_RO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ro_RO\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" #: apps.py:24 links.py:28 permissions.py:7 msgid "Statistics" @@ -25,7 +27,7 @@ msgstr "Statistică" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "" diff --git a/mayan/apps/statistics/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/ru/LC_MESSAGES/django.mo index 279a3ac462..ec303c0d28 100644 Binary files a/mayan/apps/statistics/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/ru/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/ru/LC_MESSAGES/django.po index 1c9f5a96f4..c69f6e020b 100644 --- a/mayan/apps/statistics/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/ru/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # lilo.panic, 2016 # Sergey Glita , 2013 @@ -9,15 +9,18 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-07-19 20:06+0000\n" "Last-Translator: lilo.panic\n" -"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" #: apps.py:24 links.py:28 permissions.py:7 msgid "Statistics" @@ -25,7 +28,7 @@ msgstr "Статистика" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "Запланировать" diff --git a/mayan/apps/statistics/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/sl_SI/LC_MESSAGES/django.mo index 96d10306fe..52cb732837 100644 Binary files a/mayan/apps/statistics/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/sl_SI/LC_MESSAGES/django.po index e98b40d96e..737f2d598c 100644 --- a/mayan/apps/statistics/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/sl_SI/LC_MESSAGES/django.po @@ -1,21 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-09-24 05:16+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-" +"edms/language/sl_SI/)\n" +"Language: sl_SI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: sl_SI\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" #: apps.py:24 links.py:28 permissions.py:7 msgid "Statistics" @@ -23,7 +25,7 @@ msgstr "" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "" diff --git a/mayan/apps/statistics/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/vi_VN/LC_MESSAGES/django.mo index e9dbf37f1f..189c8fba86 100644 Binary files a/mayan/apps/statistics/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/vi_VN/LC_MESSAGES/django.po index ca427b5d39..1a7f463d66 100644 --- a/mayan/apps/statistics/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/vi_VN/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Trung Phan Minh , 2013 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/" +"mayan-edms/language/vi_VN/)\n" +"Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -24,7 +25,7 @@ msgstr "Thống kê" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "" diff --git a/mayan/apps/statistics/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/statistics/locale/zh_CN/LC_MESSAGES/django.mo index f85e963756..80f0d999eb 100644 Binary files a/mayan/apps/statistics/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/statistics/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/statistics/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/statistics/locale/zh_CN/LC_MESSAGES/django.po index ecc16c85c2..ddbb8a664f 100644 --- a/mayan/apps/statistics/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/statistics/locale/zh_CN/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Ford Guo , 2014 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:05+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" +"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/" +"language/zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:24 links.py:28 permissions.py:7 @@ -24,7 +25,7 @@ msgstr "统计" #. Translators: Schedule here is a verb, the 'schedule' at which the #. statistic will be updated -#: apps.py:43 +#: apps.py:33 msgid "Schedule" msgstr "" diff --git a/mayan/apps/storage/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/ar/LC_MESSAGES/django.mo index e0af7c8ebb..d38b4a4852 100644 Binary files a/mayan/apps/storage/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/ar/LC_MESSAGES/django.po b/mayan/apps/storage/locale/ar/LC_MESSAGES/django.po index 1d98a945f3..72cce45419 100644 --- a/mayan/apps/storage/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/ar/LC_MESSAGES/django.po @@ -1,21 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:23+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/" +"ar/)\n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" #: apps.py:9 settings.py:10 msgid "Storage" diff --git a/mayan/apps/storage/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/bg/LC_MESSAGES/django.mo index 6c8fcea159..6b436ef92d 100644 Binary files a/mayan/apps/storage/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/bg/LC_MESSAGES/django.po b/mayan/apps/storage/locale/bg/LC_MESSAGES/django.po index d9cbff3beb..130716e82b 100644 --- a/mayan/apps/storage/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/bg/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:23+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" +"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/bs_BA/LC_MESSAGES/django.mo index b16699b58a..3e5715ed71 100644 Binary files a/mayan/apps/storage/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/storage/locale/bs_BA/LC_MESSAGES/django.po index 1ab354e68d..a28baebb55 100644 --- a/mayan/apps/storage/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/bs_BA/LC_MESSAGES/django.po @@ -1,21 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:23+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" +"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/" +"rosarior/mayan-edms/language/bs_BA/)\n" +"Language: bs_BA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: bs_BA\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" +"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" #: apps.py:9 settings.py:10 msgid "Storage" diff --git a/mayan/apps/storage/locale/da/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/da/LC_MESSAGES/django.mo index 1588f0b80b..c56fded10d 100644 Binary files a/mayan/apps/storage/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/da/LC_MESSAGES/django.po b/mayan/apps/storage/locale/da/LC_MESSAGES/django.po index 22e6558343..86b1f77607 100644 --- a/mayan/apps/storage/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/da/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:23+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" +"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/" +"da/)\n" +"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/de_DE/LC_MESSAGES/django.mo index 4d77c4d6c2..d0d240b3d4 100644 Binary files a/mayan/apps/storage/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/storage/locale/de_DE/LC_MESSAGES/django.po index 7869c00e46..041d2a2849 100644 --- a/mayan/apps/storage/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/de_DE/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Berny , 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:10+0000\n" "Last-Translator: Mathias Behrle \n" -"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" +"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/en/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/en/LC_MESSAGES/django.mo index f1fa87dd04..2a49b9eccb 100644 Binary files a/mayan/apps/storage/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/en/LC_MESSAGES/django.po b/mayan/apps/storage/locale/en/LC_MESSAGES/django.po index 5619954167..a2d4f94c89 100644 --- a/mayan/apps/storage/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/mayan/apps/storage/locale/es/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/es/LC_MESSAGES/django.mo index c8c0abdce9..bcfff03e06 100644 Binary files a/mayan/apps/storage/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/es/LC_MESSAGES/django.po b/mayan/apps/storage/locale/es/LC_MESSAGES/django.po index 253e1a3c28..e9685be276 100644 --- a/mayan/apps/storage/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/es/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Roberto Rosario, 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:10+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/fa/LC_MESSAGES/django.mo index d0f6c3b5dc..0e35c55e7a 100644 Binary files a/mayan/apps/storage/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/fa/LC_MESSAGES/django.po b/mayan/apps/storage/locale/fa/LC_MESSAGES/django.po index e89f7ea07a..eb9a61124a 100644 --- a/mayan/apps/storage/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/fa/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:23+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/" +"language/fa/)\n" +"Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/fr/LC_MESSAGES/django.mo index 2142f7d5b0..5c6b039d50 100644 Binary files a/mayan/apps/storage/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/fr/LC_MESSAGES/django.po b/mayan/apps/storage/locale/fr/LC_MESSAGES/django.po index 4b63a94262..3b0980dabe 100644 --- a/mayan/apps/storage/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/fr/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Christophe CHAUVET , 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:10+0000\n" "Last-Translator: Christophe CHAUVET \n" -"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" +"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/" +"fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/hu/LC_MESSAGES/django.mo index d3f6f52bca..12e6950320 100644 Binary files a/mayan/apps/storage/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/hu/LC_MESSAGES/django.po b/mayan/apps/storage/locale/hu/LC_MESSAGES/django.po index 66572c9709..e6ab3deeab 100644 --- a/mayan/apps/storage/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/hu/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:23+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" +"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/" +"language/hu/)\n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/id/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/id/LC_MESSAGES/django.mo index 237412df64..dcd42a6382 100644 Binary files a/mayan/apps/storage/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/id/LC_MESSAGES/django.po b/mayan/apps/storage/locale/id/LC_MESSAGES/django.po index c9a9dc72dc..f6cf9606fa 100644 --- a/mayan/apps/storage/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/id/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2015-08-20 19:23+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" +"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/" +"language/id/)\n" +"Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/it/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/it/LC_MESSAGES/django.mo index a9f5fa4ac3..52a3180fd7 100644 Binary files a/mayan/apps/storage/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/it/LC_MESSAGES/django.po b/mayan/apps/storage/locale/it/LC_MESSAGES/django.po index 71410927b8..66edda388c 100644 --- a/mayan/apps/storage/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/it/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Giovanni Tricarico , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:10+0000\n" "Last-Translator: Giovanni Tricarico \n" -"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" +"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/nl_NL/LC_MESSAGES/django.mo index 70aceefa93..4c2bde5923 100644 Binary files a/mayan/apps/storage/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/storage/locale/nl_NL/LC_MESSAGES/django.po index 79a3599d17..d880dd1e54 100644 --- a/mayan/apps/storage/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/nl_NL/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Evelijn Saaltink , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-10-28 09:41+0000\n" "Last-Translator: Evelijn Saaltink \n" -"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-" +"edms/language/nl_NL/)\n" +"Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/pl/LC_MESSAGES/django.mo index 73e24eb3c6..8aff344997 100644 Binary files a/mayan/apps/storage/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/pl/LC_MESSAGES/django.po b/mayan/apps/storage/locale/pl/LC_MESSAGES/django.po index d2f4362e47..7a2d8a19d6 100644 --- a/mayan/apps/storage/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/pl/LC_MESSAGES/django.po @@ -1,22 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Daniel Winiarski , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-08-04 09:32+0000\n" "Last-Translator: Daniel Winiarski \n" -"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" +"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/" +"pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" #: apps.py:9 settings.py:10 msgid "Storage" diff --git a/mayan/apps/storage/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/pt/LC_MESSAGES/django.mo index da99c6af02..e90c9a4871 100644 Binary files a/mayan/apps/storage/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/pt/LC_MESSAGES/django.po b/mayan/apps/storage/locale/pt/LC_MESSAGES/django.po index c85879a8dd..00e565c9e4 100644 --- a/mayan/apps/storage/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/pt/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Manuela Silva , 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:23-0400\n" "PO-Revision-Date: 2016-03-21 21:10+0000\n" "Last-Translator: Manuela Silva \n" -"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/pt_BR/LC_MESSAGES/django.mo index 3b965c6d95..f010c505bf 100644 Binary files a/mayan/apps/storage/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/storage/locale/pt_BR/LC_MESSAGES/django.po index 38d7c664bb..6614237034 100644 --- a/mayan/apps/storage/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/pt_BR/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Aline Freitas , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" "PO-Revision-Date: 2016-11-04 19:03+0000\n" "Last-Translator: Aline Freitas \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-" +"edms/language/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/ro_RO/LC_MESSAGES/django.mo index 2b60498a7f..62d4a76c13 100644 Binary files a/mayan/apps/storage/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/storage/locale/ro_RO/LC_MESSAGES/django.po index 9d3cfcac89..167ca15f53 100644 --- a/mayan/apps/storage/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/ro_RO/LC_MESSAGES/django.po @@ -1,22 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Stefaniu Criste , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" "PO-Revision-Date: 2016-04-17 09:42+0000\n" "Last-Translator: Stefaniu Criste \n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-" +"edms/language/ro_RO/)\n" +"Language: ro_RO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ro_RO\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" #: apps.py:9 settings.py:10 msgid "Storage" diff --git a/mayan/apps/storage/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/ru/LC_MESSAGES/django.mo index 100272eb83..1db74b85dc 100644 Binary files a/mayan/apps/storage/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/ru/LC_MESSAGES/django.po b/mayan/apps/storage/locale/ru/LC_MESSAGES/django.po index b18fe918d9..172ff24c8a 100644 --- a/mayan/apps/storage/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/ru/LC_MESSAGES/django.po @@ -1,22 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # lilo.panic, 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" "PO-Revision-Date: 2016-07-14 01:15+0000\n" "Last-Translator: lilo.panic\n" -"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" #: apps.py:9 settings.py:10 msgid "Storage" diff --git a/mayan/apps/storage/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/sl_SI/LC_MESSAGES/django.mo index 6360098ac0..5995cef920 100644 Binary files a/mayan/apps/storage/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/storage/locale/sl_SI/LC_MESSAGES/django.po index 82331b5c0d..1d6c20d803 100644 --- a/mayan/apps/storage/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/sl_SI/LC_MESSAGES/django.po @@ -1,21 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" "PO-Revision-Date: 2015-08-20 19:23+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-" +"edms/language/sl_SI/)\n" +"Language: sl_SI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: sl_SI\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" #: apps.py:9 settings.py:10 msgid "Storage" diff --git a/mayan/apps/storage/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/vi_VN/LC_MESSAGES/django.mo index c08af74dc8..6daf2ce809 100644 Binary files a/mayan/apps/storage/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/storage/locale/vi_VN/LC_MESSAGES/django.po index 8645d1e283..1568f60725 100644 --- a/mayan/apps/storage/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/vi_VN/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" "PO-Revision-Date: 2015-08-20 19:23+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/" +"mayan-edms/language/vi_VN/)\n" +"Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/storage/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/storage/locale/zh_CN/LC_MESSAGES/django.mo index a9433c9333..a831b187f6 100644 Binary files a/mayan/apps/storage/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/storage/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/storage/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/storage/locale/zh_CN/LC_MESSAGES/django.po index 163d16dc06..bb225abab9 100644 --- a/mayan/apps/storage/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/storage/locale/zh_CN/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" "PO-Revision-Date: 2015-08-20 19:23+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" +"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/" +"language/zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:9 settings.py:10 diff --git a/mayan/apps/tags/api_views.py b/mayan/apps/tags/api_views.py index 522a5cac38..5d96310c31 100644 --- a/mayan/apps/tags/api_views.py +++ b/mayan/apps/tags/api_views.py @@ -15,15 +15,43 @@ from rest_api.permissions import MayanPermission from .models import Tag from .permissions import ( - permission_tag_create, permission_tag_delete, permission_tag_edit, - permission_tag_remove, permission_tag_view + permission_tag_attach, permission_tag_create, permission_tag_delete, + permission_tag_edit, permission_tag_remove, permission_tag_view ) from .serializers import ( - DocumentTagSerializer, NewDocumentTagSerializer, NewTagSerializer, - TagSerializer + DocumentTagSerializer, NewDocumentTagSerializer, TagSerializer, + WritableTagSerializer ) +class APITagListView(generics.ListCreateAPIView): + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = {'GET': (permission_tag_view,)} + mayan_view_permissions = {'POST': (permission_tag_create,)} + permission_classes = (MayanPermission,) + queryset = Tag.objects.all() + + def get_serializer_class(self): + if self.request.method == 'GET': + return TagSerializer + elif self.request.method == 'POST': + return WritableTagSerializer + + def get(self, *args, **kwargs): + """ + Returns a list of all the tags. + """ + + return super(APITagListView, self).get(*args, **kwargs) + + def post(self, *args, **kwargs): + """ + Create a new tag. + """ + + return super(APITagListView, self).post(*args, **kwargs) + + class APITagView(generics.RetrieveUpdateDestroyAPIView): filter_backends = (MayanObjectPermissionsFilter,) mayan_object_permissions = { @@ -33,7 +61,6 @@ class APITagView(generics.RetrieveUpdateDestroyAPIView): 'PUT': (permission_tag_edit,) } queryset = Tag.objects.all() - serializer_class = TagSerializer def delete(self, *args, **kwargs): """ @@ -49,6 +76,12 @@ class APITagView(generics.RetrieveUpdateDestroyAPIView): return super(APITagView, self).get(*args, **kwargs) + def get_serializer_class(self): + if self.request.method == 'GET': + return TagSerializer + else: + return WritableTagSerializer + def patch(self, *args, **kwargs): """ Edit the selected tag. @@ -64,34 +97,6 @@ class APITagView(generics.RetrieveUpdateDestroyAPIView): return super(APITagView, self).put(*args, **kwargs) -class APITagListView(generics.ListCreateAPIView): - filter_backends = (MayanObjectPermissionsFilter,) - mayan_object_permissions = {'GET': (permission_tag_view,)} - mayan_view_permissions = {'POST': (permission_tag_create,)} - permission_classes = (MayanPermission,) - queryset = Tag.objects.all() - - def get_serializer_class(self): - if self.request.method == 'GET': - return TagSerializer - elif self.request.method == 'POST': - return NewTagSerializer - - def get(self, *args, **kwargs): - """ - Returns a list of all the tags. - """ - - return super(APITagListView, self).get(*args, **kwargs) - - def post(self, *args, **kwargs): - """ - Create a new tag. - """ - - return super(APITagListView, self).post(*args, **kwargs) - - class APITagDocumentListView(generics.ListAPIView): """ Returns a list of all the documents tagged by a particular tag. @@ -112,15 +117,21 @@ class APITagDocumentListView(generics.ListAPIView): class APIDocumentTagListView(generics.ListCreateAPIView): - """ - Returns a list of all the tags attached to a document. - """ - filter_backends = (MayanObjectPermissionsFilter,) - mayan_object_permissions = {'GET': (permission_tag_view,)} + mayan_object_permissions = { + 'GET': (permission_tag_view,), + 'POST': (permission_tag_attach,) + } + + def get(self, *args, **kwargs): + """ + Returns a list of all the tags attached to a document. + """ + + return super(APIDocumentTagListView, self).get(*args, **kwargs) def get_document(self): - return get_object_or_404(Document, pk=self.kwargs['pk']) + return get_object_or_404(Document, pk=self.kwargs['document_pk']) def get_queryset(self): document = self.get_document() @@ -132,6 +143,12 @@ class APIDocumentTagListView(generics.ListCreateAPIView): return document.attached_tags().all() + def get_serializer_class(self): + if self.request.method == 'GET': + return DocumentTagSerializer + elif self.request.method == 'POST': + return NewDocumentTagSerializer + def get_serializer_context(self): """ Extra context provided to the serializer class. @@ -143,12 +160,6 @@ class APIDocumentTagListView(generics.ListCreateAPIView): 'view': self } - def get_serializer_class(self): - if self.request.method == 'GET': - return DocumentTagSerializer - elif self.request.method == 'POST': - return NewDocumentTagSerializer - def perform_create(self, serializer): serializer.save(document=self.get_document()) diff --git a/mayan/apps/tags/apps.py b/mayan/apps/tags/apps.py index c0c39ef7cd..397eb2bcfc 100644 --- a/mayan/apps/tags/apps.py +++ b/mayan/apps/tags/apps.py @@ -29,8 +29,8 @@ from .widgets import widget_document_tags, widget_single_tag class TagsApp(MayanAppConfig): + has_tests = True name = 'tags' - test = True verbose_name = _('Tags') def ready(self): diff --git a/mayan/apps/tags/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/ar/LC_MESSAGES/django.mo index b68eb4af8d..66e9b4ea52 100644 Binary files a/mayan/apps/tags/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/ar/LC_MESSAGES/django.po b/mayan/apps/tags/locale/ar/LC_MESSAGES/django.po index 2ef5e5d294..24c8abccbe 100644 --- a/mayan/apps/tags/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/ar/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -19,40 +19,36 @@ msgstr "" "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" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "الكلمات الاستدلالية" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "الوثائق" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "" #: links.py:17 links.py:24 -msgid "Attach tag" +msgid "Attach tags" msgstr "" #: links.py:20 msgid "Remove tags" msgstr "" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "" @@ -60,23 +56,27 @@ msgstr "" msgid "Edit" msgstr "تحرير" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "اللون" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -104,31 +104,40 @@ msgstr "إضافة كلمات استدلالية للوثائق" msgid "Remove tags from documents" msgstr "إزالة الكلمات الاستدلالية من الوثائق" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "يجب توفير وثيقة واحدة عالاقل." - -#: views.py:86 +#: views.py:35 #, python-format -msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" -msgstr "الوثيقة \"%(document)s\" مربوطة مسبقاً بالكلمات الاستدلالية \"%(tag)s\"" +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:96 -#, python-format -msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." -msgstr "تم ربط الكلمة الاستدلالية \"%(tag)s\" بالوثيقة \"%(document)s\" ." +#: views.py:42 +msgid "Attach" +msgstr "" -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" @@ -136,25 +145,49 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "يجب توفير كلمة استدلالية واحدة عالاقل" - -#: views.py:182 +#: views.py:54 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "الكلمة الاستدلالية \"%s\" مسحت بنجاح." +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" -#: views.py:186 +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "خطأ أثناء مسح الكلمة الاستدلالية \"%(tag)s\": %(error)s" +msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" +msgstr "الوثيقة \"%(document)s\" مربوطة مسبقاً بالكلمات الاستدلالية \"%(tag)s\"" -#: views.py:196 +#: views.py:99 +#, python-format +msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." +msgstr "تم ربط الكلمة الاستدلالية \"%(tag)s\" بالوثيقة \"%(document)s\" ." + +#: views.py:108 +msgid "Create tag" +msgstr "" + +#: views.py:119 +#, python-format +msgid "Tag delete request performed on %(count)d tag" +msgstr "" + +#: views.py:121 +#, python-format +msgid "Tag delete request performed on %(count)d tags" +msgstr "" + +#: views.py:128 msgid "Will be removed from all documents." msgstr "ستتم الإزالة من جميع الوثائق." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" @@ -164,71 +197,124 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "الكلمة الاستدلالية \"%s\" مسحت بنجاح." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "خطأ أثناء مسح الكلمة الاستدلالية \"%(tag)s\": %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "يجب توفير وثيقة واحد عالاقل مربوطة بكلمات استدلالية" - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "ازالة الكلمة الاستدلالية من الوثيقة: %s" - -#: views.py:336 -#, python-format -msgid "Remove tag from documents: %s." -msgstr "ازالة الكلمة الاستدلالية من الوثائق: %s" - -#: views.py:344 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:351 +#: views.py:237 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:360 +#: views.py:244 +msgid "Remove" +msgstr "إزالة" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#: views.py:265 +msgid "Tags to be removed." msgstr "" -#: views.py:379 +#: views.py:290 #, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "الوثيقة \"%(document)s\" لم تربط مع: \"%(tag)s\"" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "الكلمة الاستدلالية \"%(tag)s\" أزيلت بنجاح من الوثيقة \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" +#~ msgstr[2] "2b1f894eebfe4fd9c93a2a121387867c_pl_2" +#~ msgstr[3] "2b1f894eebfe4fd9c93a2a121387867c_pl_3" +#~ msgstr[4] "2b1f894eebfe4fd9c93a2a121387867c_pl_4" +#~ msgstr[5] "2b1f894eebfe4fd9c93a2a121387867c_pl_5" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -280,9 +366,6 @@ msgstr "الكلمة الاستدلالية \"%(tag)s\" أزيلت بنجاح م #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/bg/LC_MESSAGES/django.mo index ef999b129e..3b00a4af3f 100644 Binary files a/mayan/apps/tags/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/bg/LC_MESSAGES/django.po b/mayan/apps/tags/locale/bg/LC_MESSAGES/django.po index 5b2a818072..ad43a373e8 100644 --- a/mayan/apps/tags/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/bg/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -19,40 +19,36 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Етикети" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Документи" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "" #: links.py:17 links.py:24 -msgid "Attach tag" +msgid "Attach tags" msgstr "" #: links.py:20 msgid "Remove tags" msgstr "" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "" @@ -60,23 +56,27 @@ msgstr "" msgid "Edit" msgstr "Редактиране" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Цвят" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -104,123 +104,201 @@ msgstr "Закачане етикет към документи" msgid "Remove tags from documents" msgstr "Премахване на етикети от документи" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Трябва да посочите поне един документ." +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "" -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "" -msgstr[1] "" +#: views.py:108 +msgid "Create tag" +msgstr "" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Трябва да се осигури най-малко един етикет." - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Етикет \"%s\" е изтрит успешно." +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Грешка при изтриване на етикет \"%(tag)s\": %(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Ще бъде премахнат от всички документи." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" msgstr[1] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Етикет \"%s\" е изтрит успешно." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Грешка при изтриване на етикет \"%(tag)s\": %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "" - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:336 +#: views.py:237 #, python-format -msgid "Remove tag from documents: %s." +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:344 +#: views.py:244 +msgid "Remove" +msgstr "Премахнете" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:351 +#: views.py:265 +msgid "Tags to be removed." +msgstr "" + +#: views.py:290 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" msgstr "" -#: views.py:360 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" -msgstr "" - -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" -msgstr "" - -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "" - -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -272,9 +350,6 @@ msgstr "" #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/bs_BA/LC_MESSAGES/django.mo index e52a90b654..0580ec92b7 100644 Binary files a/mayan/apps/tags/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/tags/locale/bs_BA/LC_MESSAGES/django.po index 9d58d5d9e3..c94b73be30 100644 --- a/mayan/apps/tags/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/bs_BA/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -19,40 +19,36 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Tagovi" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Dokumenti" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "" #: links.py:17 links.py:24 -msgid "Attach tag" +msgid "Attach tags" msgstr "" #: links.py:20 msgid "Remove tags" msgstr "" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "" @@ -60,23 +56,27 @@ msgstr "" msgid "Edit" msgstr "Urediti" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Boja" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -104,125 +104,205 @@ msgstr "Prikači tagove na dokumente" msgid "Remove tags from documents" msgstr "Ukloni tagove iz dokumenta" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Mora biti obezbjeđen bar jedan dokument." - -#: views.py:86 +#: views.py:35 #, python-format -msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" -msgstr "Dokument \"%(document)s\" je već tagovan kao \"%(tag)s\"" +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:96 -#, python-format -msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." -msgstr "Tag \"%(tag)s\" uspješno prikačen na dokument \"%(document)s\"." +#: views.py:42 +msgid "Attach" +msgstr "" -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Mora biti obezbjeđen bar jedan tag." - -#: views.py:182 +#: views.py:54 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Tag \"%s\" uspješno izbrisan." +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" -#: views.py:186 +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Greška brisanja taga \"%(tag)s\": %(error)s" +msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" +msgstr "Dokument \"%(document)s\" je već tagovan kao \"%(tag)s\"" -#: views.py:196 +#: views.py:99 +#, python-format +msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." +msgstr "Tag \"%(tag)s\" uspješno prikačen na dokument \"%(document)s\"." + +#: views.py:108 +msgid "Create tag" +msgstr "" + +#: views.py:119 +#, python-format +msgid "Tag delete request performed on %(count)d tag" +msgstr "" + +#: views.py:121 +#, python-format +msgid "Tag delete request performed on %(count)d tags" +msgstr "" + +#: views.py:128 msgid "Will be removed from all documents." msgstr "Bit će uklonjen iz svih dokumenata." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Tag \"%s\" uspješno izbrisan." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Greška brisanja taga \"%(tag)s\": %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "Mora biti obezbjeđen bar jedan tagovani dokument." - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "Ukloni tag iz dokumenta: %s." - -#: views.py:336 -#, python-format -msgid "Remove tag from documents: %s." -msgstr "Ukloni tag iz dokumenata: %s." - -#: views.py:344 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:351 +#: views.py:237 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:360 +#: views.py:244 +msgid "Remove" +msgstr "Ukloniti" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#: views.py:265 +msgid "Tags to be removed." msgstr "" -#: views.py:379 +#: views.py:290 #, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "Dokument \"%(document)s\" nije tagovan kao \"%(tag)s\"" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "Tag \"%(tag)s\" uspješno uklonjen iz dokumenta \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" +#~ msgstr[2] "2b1f894eebfe4fd9c93a2a121387867c_pl_2" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -274,9 +354,6 @@ msgstr "Tag \"%(tag)s\" uspješno uklonjen iz dokumenta \"%(document)s\"." #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/da/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/da/LC_MESSAGES/django.mo index 8a4bc9828e..05a8895850 100644 Binary files a/mayan/apps/tags/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/da/LC_MESSAGES/django.po b/mayan/apps/tags/locale/da/LC_MESSAGES/django.po index fa43de7037..576250e58b 100644 --- a/mayan/apps/tags/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/da/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -19,40 +19,36 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Tags" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Dokumenter" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "" #: links.py:17 links.py:24 -msgid "Attach tag" +msgid "Attach tags" msgstr "" #: links.py:20 msgid "Remove tags" msgstr "" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "" @@ -60,23 +56,27 @@ msgstr "" msgid "Edit" msgstr "" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Farve" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -104,123 +104,201 @@ msgstr "Vedhæft tags til dokumenter" msgid "Remove tags from documents" msgstr "Fjern tags fra dokumenter" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Skal angive mindst ét ​​dokument." +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "Dokumentet \"%(document)s\" er allerede mærket som \"%(tag)s\"" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "Tag \"%(tag)s\" vedhæftet til at dokumentet \"%(document)s\"." -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "" -msgstr[1] "" +#: views.py:108 +msgid "Create tag" +msgstr "" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Der skal angives mindst én tag." - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Tag \"%s\" slettet." +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Fejl ved sletning af tag \"%(tag)s\": %(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Vil blive fjernet fra alle dokumenter." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" msgstr[1] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Tag \"%s\" slettet." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Fejl ved sletning af tag \"%(tag)s\": %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "Skal angive mindst ét tagget dokument." - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "Fjern tag fra dokument: %s." - -#: views.py:336 -#, python-format -msgid "Remove tag from documents: %s." -msgstr "Fjern tag fra dokumenter: %s." - -#: views.py:344 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:351 +#: views.py:237 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:360 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#: views.py:244 +msgid "Remove" msgstr "" -#: views.py:367 +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:256 #, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "Dokumentet \"%(document)s\" ikke blev kodet som \"%(tag)s\"" +#: views.py:265 +msgid "Tags to be removed." +msgstr "" -#: views.py:388 +#: views.py:290 +#, python-format +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" + +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "Tag \"%(tag)s\" blev fjernet fra dokumentet \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -272,9 +350,6 @@ msgstr "Tag \"%(tag)s\" blev fjernet fra dokumentet \"%(document)s\"." #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/de_DE/LC_MESSAGES/django.mo index 2b63b3b3d0..fcf871cfb0 100644 Binary files a/mayan/apps/tags/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/tags/locale/de_DE/LC_MESSAGES/django.po index 66b1952f91..200abd3a19 100644 --- a/mayan/apps/tags/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/de_DE/LC_MESSAGES/django.po @@ -5,13 +5,14 @@ # Translators: # Translators: # Berny , 2015-2016 +# Jesaja Everling , 2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-05-20 21:33+0000\n" -"Last-Translator: Tobias Paepke \n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-24 23:13+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,40 +20,36 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Tags" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "Vorschau" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Dokumente" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "Dem Dokument hinzuzufügende Tags." - #: links.py:14 msgid "Remove tag" msgstr "Tag entfernen" #: links.py:17 links.py:24 -msgid "Attach tag" -msgstr "Tag anhängen" +msgid "Attach tags" +msgstr "Tags zuweisen" #: links.py:20 msgid "Remove tags" msgstr "Tags entfernen" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "Neuen Tag erstellen" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "Löschen" @@ -60,23 +57,27 @@ msgstr "Löschen" msgid "Edit" msgstr "Bearbeiten" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "Alle" + +#: models.py:18 msgid "Label" msgstr "Text" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Farbe" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "Tag" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "Tag" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "Tags" @@ -104,123 +105,201 @@ msgstr "Tags zu Dokumenten hinzufügen" msgid "Remove tags from documents" msgstr "Tags von Dokumenten entfernen" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "Komma getrennte Liste der Primary Keys der Dokumente denen dieser Tag zugeordnet werden soll" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "Primärschlüssel des hinzuzufügenden Tags" -#: views.py:34 -msgid "Create tag" -msgstr "Tag erstellen" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" +msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Es muss mindestens ein Dokument angegeben werden." +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "Dokument \"%(document)s\" ist schon mit \"%(tag)s\" markiert" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "Tag \"%(tag)s\" erfolgreich an Dokument \"%(document)s\" angehängt" -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "Tag an Dokument anhängen" -msgstr[1] "Tag an Dokumente anhängen" +#: views.py:108 +msgid "Create tag" +msgstr "Tag erstellen" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Es muss Mindestens einen Tag angeben werden" - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Tag \"%s\" erfolgreich gelöscht" +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Fehler beim Löschen des Tags \"%(tag)s\": %(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Wird von allen Dokumenten entfernt" -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "Den ausgwählten Tag löschen?" msgstr[1] "Die ausgwählten Tags löschen?" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Tag \"%s\" erfolgreich gelöscht" + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Fehler beim Löschen des Tags \"%(tag)s\": %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "Tag %s bearbeiten" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "Dokumente mit Tag %s" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "Tags für Dokument %s" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "Es muss mindestens ein markiertes Dokument angegeben werden" - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "Tag von Dokument %s entfernen" +msgid "Tag remove request performed on %(count)d document" +msgstr "" -#: views.py:336 +#: views.py:237 #, python-format -msgid "Remove tag from documents: %s." -msgstr "Tag von Dokumenten %s entfernen." +msgid "Tag remove request performed on %(count)d documents" +msgstr "" -#: views.py:344 +#: views.py:244 +msgid "Remove" +msgstr "Entfernen" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" -msgstr "Wollen Sie den Tag %(tag)s wirklich vom Dokument %(document)s entfernen?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" +msgstr "" -#: views.py:351 +#: views.py:265 +msgid "Tags to be removed." +msgstr "" + +#: views.py:290 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" -msgstr "Tag \"%(tag)s\" wirklich von den Dokumenten %(documents)s entfernen?" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:360 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" -msgstr "Wollen Sie die Tags %(tags)s vom Dokument %(document)s entfernen?" - -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" -msgstr "Tags \"%(tags)s\" wirklich von den Dokumenten %(documents)s entfernen?" - -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "Dokument \"%(document)s war nicht mit \"%(tag)s\" markiert" - -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "Tag \"%(tag)s\" erfolgreich von Dokument \"%(document)s\" entfernt." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -272,9 +351,6 @@ msgstr "Tag \"%(tag)s\" erfolgreich von Dokument \"%(document)s\" entfernt." #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/en/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/en/LC_MESSAGES/django.mo index 30e20e69f1..afad613740 100644 Binary files a/mayan/apps/tags/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/en/LC_MESSAGES/django.po b/mayan/apps/tags/locale/en/LC_MESSAGES/django.po index acae517c0b..deb130b780 100644 --- a/mayan/apps/tags/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" "PO-Revision-Date: 2012-12-12 06:07+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,26 +18,21 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Tags" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 #, fuzzy msgid "Preview" msgstr "preview" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 #, fuzzy msgid "Documents" msgstr "document" -#: forms.py:53 -#, fuzzy -msgid "Tags to attach to the document." -msgstr "Attach tags to documents" - #: links.py:14 #, fuzzy msgid "Remove tag" @@ -45,7 +40,7 @@ msgstr "remove tag" #: links.py:17 links.py:24 #, fuzzy -msgid "Attach tag" +msgid "Attach tags" msgstr "attach tag" #: links.py:20 @@ -53,12 +48,12 @@ msgstr "attach tag" msgid "Remove tags" msgstr "remove tag" -#: links.py:28 +#: links.py:29 #, fuzzy msgid "Create new tag" msgstr "Create new tags" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 #, fuzzy msgid "Delete" msgstr "delete" @@ -68,25 +63,29 @@ msgstr "delete" msgid "Edit" msgstr "Edit tags" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Color" -#: models.py:34 +#: models.py:33 #, fuzzy msgid "Tag" msgstr "Tags" -#: models.py:53 +#: models.py:47 #, fuzzy msgid "Document tag" msgstr "document" -#: models.py:54 +#: models.py:48 #, fuzzy msgid "Document tags" msgstr "document" @@ -115,137 +114,222 @@ msgstr "Attach tags to documents" msgid "Remove tags from documents" msgstr "Remove tags from documents" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" +msgstr "" + +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" + +#: views.py:42 #, fuzzy -msgid "Create tag" -msgstr "create tag" +msgid "Attach" +msgstr "attach tag" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Must provide at least one document." +#: views.py:44 +#, fuzzy +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "Attach tags to documents" +msgstr[1] "Attach tags to documents" -#: views.py:86 +#: views.py:54 +#, fuzzy, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "Attach tag to document: %s." + +#: views.py:63 +#, fuzzy +msgid "Tags to be attached." +msgstr "Attach tags to documents" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "Document \"%(document)s\" is already tagged as \"%(tag)s\"" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." -#: views.py:110 +#: views.py:108 #, fuzzy -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "Attach tags to documents" -msgstr[1] "Attach tags to documents" +msgid "Create tag" +msgstr "create tag" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Must provide at least one tag." - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Tag \"%s\" deleted successfully." +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Error deleting tag \"%(tag)s\": %(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Will be removed from all documents." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 #, fuzzy msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "Are you sure you wish to delete the tag: %s?" msgstr[1] "Are you sure you wish to delete the tag: %s?" -#: views.py:231 +#: views.py:142 +#, fuzzy, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "Delete tags" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Tag \"%s\" deleted successfully." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Error deleting tag \"%(tag)s\": %(error)s" + +#: views.py:171 #, fuzzy, python-format msgid "Edit tag: %s" msgstr "edit tag: %s" -#: views.py:244 +#: views.py:201 #, fuzzy, python-format msgid "Documents with the tag: %s" msgstr "documents with the tag \"%s\"" -#: views.py:271 +#: views.py:224 #, fuzzy, python-format msgid "Tags for document: %s" msgstr "tags for: %s" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "Must provide at least one tagged document." - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." +msgid "Tag remove request performed on %(count)d document" +msgstr "" + +#: views.py:237 +#, python-format +msgid "Tag remove request performed on %(count)d documents" +msgstr "" + +#: views.py:244 +#, fuzzy +msgid "Remove" +msgstr "remove tag" + +#: views.py:246 +#, fuzzy +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "Remove tags from documents" +msgstr[1] "Remove tags from documents" + +#: views.py:256 +#, fuzzy, python-format +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "Remove tag from document: %s." -#: views.py:336 -#, python-format -msgid "Remove tag from documents: %s." -msgstr "Remove tag from documents: %s." - -#: views.py:344 -#, fuzzy, python-format -#| msgid "" -#| "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " -#| "%(document)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#: views.py:265 +msgid "Tags to be removed." msgstr "" -"Are you sure you wish to remove the tag \"%(tag)s\" from the document: " -"%(document)s?" -#: views.py:351 +#: views.py:290 #, fuzzy, python-format -#| msgid "" -#| "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " -#| "%(documents)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" -msgstr "" -"Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " -"%(documents)s?" - -#: views.py:360 -#, fuzzy, python-format -#| msgid "" -#| "Are you sure you wish to remove the tags: %(tags)s from the document: " -#| "%(document)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" -msgstr "" -"Are you sure you wish to remove the tags: %(tags)s from the document: " -"%(document)s?" - -#: views.py:367 -#, fuzzy, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" -msgstr "" -"Are you sure you wish to remove the tags %(tag)s from the documents: " -"%(documents)s?" - -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" msgstr "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#, fuzzy +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "Attach tags to documents" +#~ msgstr[1] "Attach tags to documents" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#, fuzzy +#~| msgid "" +#~| "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~| "%(document)s?" +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#, fuzzy +#~| msgid "" +#~| "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~| "%(documents)s?" +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#, fuzzy +#~| msgid "" +#~| "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~| "%(document)s?" +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#, fuzzy +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #, fuzzy #~ msgid "remove tags" #~ msgstr "remove tags" @@ -300,9 +384,6 @@ msgstr "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/es/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/es/LC_MESSAGES/django.mo index 0f458e7487..cd29b7d7e9 100644 Binary files a/mayan/apps/tags/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/es/LC_MESSAGES/django.po b/mayan/apps/tags/locale/es/LC_MESSAGES/django.po index 97ace02593..16b0147fd0 100644 --- a/mayan/apps/tags/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/es/LC_MESSAGES/django.po @@ -6,13 +6,13 @@ # Translators: # jmcainzos , 2014 # Lory977 , 2015 -# Roberto Rosario, 2015-2016 +# Roberto Rosario, 2015-2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-05-09 01:32+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-22 22:06+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -21,40 +21,36 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Etiquetas" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "Presentación preliminar" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Documentos" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "Etiquetas para anejar al documento." - #: links.py:14 msgid "Remove tag" msgstr "Remover etiqueta" #: links.py:17 links.py:24 -msgid "Attach tag" -msgstr "Adjuntar etiqueta" +msgid "Attach tags" +msgstr "Anejar etiqueta" #: links.py:20 msgid "Remove tags" msgstr "Remover etiquetas" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "Crear nueva etiqueta" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "Eliminar" @@ -62,23 +58,27 @@ msgstr "Eliminar" msgid "Edit" msgstr "Editar" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "Todos" + +#: models.py:18 msgid "Label" msgstr "Etiqueta" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Color" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "Etiqueta" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "Etiqueta de documento" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "Etiquetas de documentos" @@ -106,123 +106,201 @@ msgstr "Etiquetar documentos" msgid "Remove tags from documents" msgstr "Quitar etiquetas de los documentos" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "Llave primaria de la etiqueta a ser agregada." -#: views.py:34 -msgid "Create tag" -msgstr "Crear etiqueta" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" +msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Debe proporcionar al menos un documento." +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "Anejar" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "Anejar etiquetas al documento" +msgstr[1] "Anejar etiquetas a documentos" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "Anejar etiquetas al documento: %s" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "Etiquetas a ser anejadas." + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "Documento \"%(document)s \" ya está etiquetado como \"%(tag)s\"" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "Etiqueta \"%(tag)s\" puesta al documento \"%(document)s\"." -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "Adjuntar etiqueta al documento" -msgstr[1] "Adjuntar etiqueta a los documentos" +#: views.py:108 +msgid "Create tag" +msgstr "Crear etiqueta" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Debe indicar al menos una etiqueta." - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Etiqueta \"%s\" borrada con éxito." +msgid "Tag delete request performed on %(count)d tag" +msgstr "Petición para borrar etiqueta sometida para %(count)d etiqueta" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Error al eliminar la etiqueta \"%(tag)s\": %(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "Petición para borrar etiqueta sometida para %(count)d etiquetas" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Se eliminará de todos los documentos." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "¿Eliminar la etiqueta seleccionada?" msgstr[1] "¿Eliminar las etiquetas seleccionadas?" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "Borrar etiqueta: %s" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Etiqueta \"%s\" borrada con éxito." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Error al eliminar la etiqueta \"%(tag)s\": %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "Editar etiqueta: %s" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "Documentos con la etiqueta: %s" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "Etiquetas del documento: %s" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "Debe proporcionar al menos un documento etiquetado." - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "Quitar etiqueta del documento: %s." +msgid "Tag remove request performed on %(count)d document" +msgstr "" -#: views.py:336 +#: views.py:237 #, python-format -msgid "Remove tag from documents: %s." -msgstr "Quitar etiqueta de los documentos: %s." +msgid "Tag remove request performed on %(count)d documents" +msgstr "" -#: views.py:344 +#: views.py:244 +msgid "Remove" +msgstr "Eliminar" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "Remover etiquetas de documento" +msgstr[1] "Remover etiquetas de documentos" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" -msgstr "¿Remover la etiqueta \"%(tag)s\" del documento: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" +msgstr "Remover etiquetas de documento: %s" -#: views.py:351 +#: views.py:265 +msgid "Tags to be removed." +msgstr "Etiquetas a ser removidas." + +#: views.py:290 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" -msgstr "¿Remover la etiqueta \"%(tag)s\" de los documentos: %(documents)s?" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "Documento \"%(document)s\" no esta etiquetado con \"%(tag)s" -#: views.py:360 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" -msgstr "¿Remover las etiquetas: %(tags)s del documento: %(document)s?" - -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" -msgstr "¿Remover las etiquetas %(tags)s de los documentos: %(documents)s?" - -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "Documento \"%(document)s\" no estaba etiquetado como \"%(tag)s \"" - -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "Etiqueta \"%(tag)s\" eliminada con éxito del documento \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -274,9 +352,6 @@ msgstr "Etiqueta \"%(tag)s\" eliminada con éxito del documento \"%(document)s\" #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/fa/LC_MESSAGES/django.mo index 2a0d66deb5..d995b292c7 100644 Binary files a/mayan/apps/tags/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/fa/LC_MESSAGES/django.po b/mayan/apps/tags/locale/fa/LC_MESSAGES/django.po index 5280182912..7bc05e29f3 100644 --- a/mayan/apps/tags/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/fa/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -19,40 +19,36 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "برچسبها" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "پیش دید ویا دیدن" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "اسناد" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "برداشتن برچسب" #: links.py:17 links.py:24 -msgid "Attach tag" -msgstr "الصاق برچسب" +msgid "Attach tags" +msgstr "" #: links.py:20 msgid "Remove tags" msgstr "برداشتن برچسبها" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "برچسب جدید" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "حذف" @@ -60,23 +56,27 @@ msgstr "حذف" msgid "Edit" msgstr "ویرایش" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "برچسب" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "رنگ" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "برچسب" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -104,121 +104,197 @@ msgstr "الصاق برچسبها به اسناد" msgid "Remove tags from documents" msgstr "حذف برچسبهای سند" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" -msgstr "ایجادبرچسب" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" +msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "حداقل یک سند باید ارایه شود" +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "سند \"%(document)s\" دارای برچسب \"%(tag)s\" میباشد." -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "برچسب \"%(tag)s\" با موفقیت به سند \"%(document)s\" متصل شد." -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "اتصال برچسب به سند" +#: views.py:108 +msgid "Create tag" +msgstr "ایجادبرچسب" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "حداقل یک برچسب باید ارایه شود." - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "حذف موفق برچسب \"%s\" " +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "خطا در زمان حذف برچسب: \"%(tag)s\": %(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "از کلیه اسناد حذف خواهد شد." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "حذف موفق برچسب \"%s\" " + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "خطا در زمان حذف برچسب: \"%(tag)s\": %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "ویرایش برچسب: %s" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "اسناد دارای برچسب : %s" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "برچسب سند : %s" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "باید حداقل یک سند برچسب دار ارایه شود." - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "حذف برچسب از سند: %s" - -#: views.py:336 -#, python-format -msgid "Remove tag from documents: %s." -msgstr "حذف برچسب از اسناد: %s" - -#: views.py:344 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:351 +#: views.py:237 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:360 +#: views.py:244 +msgid "Remove" +msgstr "حذف" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#: views.py:265 +msgid "Tags to be removed." msgstr "" -#: views.py:379 +#: views.py:290 #, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "سند \"%(document)s\" دارای برچسب \"%(tag)s\" نمیباشد." +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "برچسب \"%(tag)s\" با موفقیت از سند \"%(document)s\" برداشته شد." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -270,9 +346,6 @@ msgstr "برچسب \"%(tag)s\" با موفقیت از سند \"%(document)s\" #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/fr/LC_MESSAGES/django.mo index 1f188df70e..1daedcbb69 100644 Binary files a/mayan/apps/tags/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/fr/LC_MESSAGES/django.po b/mayan/apps/tags/locale/fr/LC_MESSAGES/django.po index 85164ca4c7..4f37030052 100644 --- a/mayan/apps/tags/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/fr/LC_MESSAGES/django.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-04-25 12:07+0000\n" -"Last-Translator: Baptiste GAILLET \n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,40 +22,36 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Etiquettes" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "Prévisualiser" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Documents" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "Tags a attacher au document" - #: links.py:14 msgid "Remove tag" msgstr "Supprimer une étiquette" #: links.py:17 links.py:24 -msgid "Attach tag" -msgstr "Rattacher une étiquette" +msgid "Attach tags" +msgstr "" #: links.py:20 msgid "Remove tags" msgstr "Supprimer des étiquettes" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "Créer une nouvelle étiquette" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "Supprimer" @@ -63,23 +59,27 @@ msgstr "Supprimer" msgid "Edit" msgstr "Modifier" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Étiquette" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Couleur" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "Étiquette" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "Étiquette de document" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "Étiquettes de document" @@ -107,123 +107,201 @@ msgstr "Rattacher des étiquettes aux documents" msgid "Remove tags from documents" msgstr "Retirer des étiquettes au document" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "La clé primaire pour l'étiquette sera ajoutée." -#: views.py:34 -msgid "Create tag" -msgstr "Créer une étiquette" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" +msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Il est nécessaire d'indiquer au moins un document." +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "Le document \"%(document)s\" est déjà étiqueté comme \"%(tag)s\"" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "L'étiquette \"%(tag)s\" a été attachée avec succès au document \"%(document)s\"." -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "Rattacher une étiquette au document" -msgstr[1] "Rattacher une étiquette aux documents" +#: views.py:108 +msgid "Create tag" +msgstr "Créer une étiquette" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Vous devez fournir au moins une étiquette" - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Etiquette \"%s\" supprimée avec succès" +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Erreur lors de la suppression de l'étiquette \"%(tag)s\": %(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Sera supprimée de tous les documents" -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "Supprimer l'étiquette sélectionnée?" msgstr[1] "Supprimer les étiquettes sélectionnées?" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Etiquette \"%s\" supprimée avec succès" + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Erreur lors de la suppression de l'étiquette \"%(tag)s\": %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "Modifier l'étiquette:%s" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "Documents avec l'étiquette: %s" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "Étiquettes du document: %s" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "Il est nécessaire d'indiquer au moins un document étiqueté." - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "Supprimer l'étiquette du document: %s" +msgid "Tag remove request performed on %(count)d document" +msgstr "" -#: views.py:336 +#: views.py:237 #, python-format -msgid "Remove tag from documents: %s." -msgstr "Supprimer l'étiquette des documents: %s" +msgid "Tag remove request performed on %(count)d documents" +msgstr "" -#: views.py:344 +#: views.py:244 +msgid "Remove" +msgstr "Supprimer" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" -msgstr "Supprimer l'étiquette \"%(tag)s\" du document %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" +msgstr "" -#: views.py:351 +#: views.py:265 +msgid "Tags to be removed." +msgstr "" + +#: views.py:290 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" -msgstr "Supprimer l'étiquette \"%(tag)s\" des documents %(documents)s?" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:360 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" -msgstr "Supprimer les étiquettes \"%(tags)s\" du document %(document)s?" - -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" -msgstr "Supprimer les étiquettes \"%(tags)s\" des documents %(documents)s?" - -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "Le document \"%(document)s\" n'a pas été étiqueté avec \"%(tag)s\"" - -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "L'étiquette \"%(tag)s\" à été supprimée avec succès du document \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -275,9 +353,6 @@ msgstr "L'étiquette \"%(tag)s\" à été supprimée avec succès du document \" #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/hu/LC_MESSAGES/django.mo index 78263a536f..c9f43b1c6c 100644 Binary files a/mayan/apps/tags/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/hu/LC_MESSAGES/django.po b/mayan/apps/tags/locale/hu/LC_MESSAGES/django.po index f5610de111..7796494070 100644 --- a/mayan/apps/tags/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/hu/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -18,40 +18,36 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Címkék" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "dokumentumok" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "" #: links.py:17 links.py:24 -msgid "Attach tag" +msgid "Attach tags" msgstr "" #: links.py:20 msgid "Remove tags" msgstr "" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "" @@ -59,23 +55,27 @@ msgstr "" msgid "Edit" msgstr "" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -103,123 +103,201 @@ msgstr "" msgid "Remove tags from documents" msgstr "" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Adjon meg legalább egy dokumentumot." +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "" -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "" -msgstr[1] "" - -#: views.py:160 -msgid "Must provide at least one tag." +#: views.py:108 +msgid "Create tag" msgstr "" -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." +msgid "Tag delete request performed on %(count)d tag" msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgid "Tag delete request performed on %(count)d tags" msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "" -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" msgstr[1] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "" + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "" - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:336 +#: views.py:237 #, python-format -msgid "Remove tag from documents: %s." +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:344 +#: views.py:244 +msgid "Remove" +msgstr "" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:351 +#: views.py:265 +msgid "Tags to be removed." +msgstr "" + +#: views.py:290 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" msgstr "" -#: views.py:360 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" -msgstr "" - -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" -msgstr "" - -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "" - -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -271,9 +349,6 @@ msgstr "" #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/id/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/id/LC_MESSAGES/django.mo index 3c8ac587c0..bc201be285 100644 Binary files a/mayan/apps/tags/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/id/LC_MESSAGES/django.po b/mayan/apps/tags/locale/id/LC_MESSAGES/django.po index 8a895fd530..90916db8ce 100644 --- a/mayan/apps/tags/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,40 +18,36 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Dokumen" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "" #: links.py:17 links.py:24 -msgid "Attach tag" +msgid "Attach tags" msgstr "" #: links.py:20 msgid "Remove tags" msgstr "" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "" @@ -59,23 +55,27 @@ msgstr "" msgid "Edit" msgstr "" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -103,121 +103,197 @@ msgstr "" msgid "Remove tags from documents" msgstr "" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Harus memberikan setidaknya satu dokumen." +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "" -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "" - -#: views.py:160 -msgid "Must provide at least one tag." +#: views.py:108 +msgid "Create tag" msgstr "" -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." +msgid "Tag delete request performed on %(count)d tag" msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgid "Tag delete request performed on %(count)d tags" msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "" -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "" + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "" - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:336 +#: views.py:237 #, python-format -msgid "Remove tag from documents: %s." +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:344 +#: views.py:244 +msgid "Remove" +msgstr "hapus" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:351 +#: views.py:265 +msgid "Tags to be removed." +msgstr "" + +#: views.py:290 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" msgstr "" -#: views.py:360 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" -msgstr "" - -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" -msgstr "" - -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "" - -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -269,9 +345,6 @@ msgstr "" #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/it/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/it/LC_MESSAGES/django.mo index b78100f1a7..dae37ff102 100644 Binary files a/mayan/apps/tags/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/it/LC_MESSAGES/django.po b/mayan/apps/tags/locale/it/LC_MESSAGES/django.po index 63be8e09fd..41e5e37179 100644 --- a/mayan/apps/tags/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/it/LC_MESSAGES/django.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-09-24 10:31+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,40 +22,36 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Etichette" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "Anteprima " -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Documenti" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "Tag da attaccare al documento." - #: links.py:14 msgid "Remove tag" msgstr "Rimuovi etichetta" #: links.py:17 links.py:24 -msgid "Attach tag" -msgstr "Allega etichetta" +msgid "Attach tags" +msgstr "" #: links.py:20 msgid "Remove tags" msgstr "Rimuovi etichette" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "Crea nuova etichetta" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "Cancella" @@ -63,23 +59,27 @@ msgstr "Cancella" msgid "Edit" msgstr "Modifica" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Etichetta" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Colori" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "Etichetta " -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "Etichetta documento " -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "Etichette documento " @@ -107,123 +107,201 @@ msgstr "Applicare i tag ai documenti" msgid "Remove tags from documents" msgstr "Rimuovi etichetta dal documento" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "Chiave primaria dell'etichetta da aggiungere " -#: views.py:34 -msgid "Create tag" -msgstr "Crea etichetta " +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" +msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Fornire almeno un documento " +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "Il documento \"%(document)s\" è stato già etichettato come \"%(tag)s\"" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "L'etichetta \"%(tag)s\" è stata allegata con successo al documento \"%(document)s\"" -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "Aggiungi tag al documento" -msgstr[1] "Aggiungi tag ai documenti" +#: views.py:108 +msgid "Create tag" +msgstr "Crea etichetta " -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Devi fornire almeno un'etichetta" - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Etichetta \"%s\" cancellata con successo." +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Errore nel cancellare l'etichetta \"%(tag)s\": %(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Sarà rimossa da tutti i documenti" -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "Cancellare il tag selezionato?" msgstr[1] "Cancellare i tag selezionati?" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Etichetta \"%s\" cancellata con successo." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Errore nel cancellare l'etichetta \"%(tag)s\": %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "Modifica etichetta: %s" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "Documenti con l'etichetta: %s" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "Etichette per il documento: %s" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "Fornire almeno un documento etichettato " - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "Rimuovi l'etichetta dal documento: %s" +msgid "Tag remove request performed on %(count)d document" +msgstr "" -#: views.py:336 +#: views.py:237 #, python-format -msgid "Remove tag from documents: %s." -msgstr "Rimuovi l'etichetta dai documenti: %s" +msgid "Tag remove request performed on %(count)d documents" +msgstr "" -#: views.py:344 +#: views.py:244 +msgid "Remove" +msgstr "Rimuovi" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" -msgstr "Rimuovere l'etichetta \"%(tag)s\" dal documento %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" +msgstr "" -#: views.py:351 +#: views.py:265 +msgid "Tags to be removed." +msgstr "" + +#: views.py:290 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" -msgstr "Rimuovere l'etichetta \"%(tag)s\" dai documenti: %(documents)s?" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:360 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" -msgstr "Rimuovere le etichette: %(tags)s dal documento: %(document)s?" - -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" -msgstr "Rimuovere le etichette %(tags)s dai documenti: %(documents)s?" - -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "Il documento \"%(document)s\" non è stato etichettato come \"%(tag)s\"" - -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "Etichetta \"%(tag)s\" rimossa con successo dal documento \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -275,9 +353,6 @@ msgstr "Etichetta \"%(tag)s\" rimossa con successo dal documento \"%(document)s\ #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/nl_NL/LC_MESSAGES/django.mo index 223a67dff7..782883a83d 100644 Binary files a/mayan/apps/tags/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/tags/locale/nl_NL/LC_MESSAGES/django.po index 4f10953a7a..5ff02fc58a 100644 --- a/mayan/apps/tags/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/nl_NL/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-11-09 15:49+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Evelijn Saaltink \n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" @@ -19,40 +19,36 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Labels" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "Preview" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Documenten" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "Label verwijderen" #: links.py:17 links.py:24 -msgid "Attach tag" -msgstr "Voeg label bij" +msgid "Attach tags" +msgstr "" #: links.py:20 msgid "Remove tags" msgstr "Labels verwijderen" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "Maak een nieuw label aan" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "Verwijder" @@ -60,23 +56,27 @@ msgstr "Verwijder" msgid "Edit" msgstr "bewerken" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Label" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Kleur" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "Label" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "Documentlabel" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "Documentlabels" @@ -104,123 +104,201 @@ msgstr "Label documenten" msgid "Remove tags from documents" msgstr "Labels van documenten verwijderen" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" -msgstr "maak label aan" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" +msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "U dient minstens 1 document aan te geven." +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "Document \"%(document)s\" is al gelabeld met \"%(tag)s\"" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "Label \"%(tag)s\" is gekoppeld aan document \"%(document)s\"." -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "" -msgstr[1] "" +#: views.py:108 +msgid "Create tag" +msgstr "maak label aan" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "U moet minimaal een label aanbrengen." - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Label \"%s\" verwijderd." +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Fout bij het verwijderen van label: \"%(tag)s\". Foutmelding: %(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Zal van alle documenten worden verwijderd." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "Geselecteerd label verwijderen?" msgstr[1] "Geselecteerde labels verwijderen?" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Label \"%s\" verwijderd." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Fout bij het verwijderen van label: \"%(tag)s\". Foutmelding: %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "Bewerk label: %s" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "U dient minstens 1 gelabeld document aan te brengen." - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "Verwijder label van document: %s" - -#: views.py:336 -#, python-format -msgid "Remove tag from documents: %s." -msgstr "Verwijder label van documenten: %s" - -#: views.py:344 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:351 +#: views.py:237 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:360 +#: views.py:244 +msgid "Remove" +msgstr "Verwijder" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#: views.py:265 +msgid "Tags to be removed." msgstr "" -#: views.py:379 +#: views.py:290 #, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "Document \"%(document)s\" is niet gelabeld als: \"%(tag)s\"" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "Label: \"%(tag)s\" is verwijderd van document \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -272,9 +350,6 @@ msgstr "Label: \"%(tag)s\" is verwijderd van document \"%(document)s\"." #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/pl/LC_MESSAGES/django.mo index d748866723..ccce22b519 100644 Binary files a/mayan/apps/tags/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/pl/LC_MESSAGES/django.po b/mayan/apps/tags/locale/pl/LC_MESSAGES/django.po index 7aa09f160d..259a78cc6c 100644 --- a/mayan/apps/tags/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/pl/LC_MESSAGES/django.po @@ -11,50 +11,46 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Tagi" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "Podgląd" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Dokumenty" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "Usuń tag" #: links.py:17 links.py:24 -msgid "Attach tag" -msgstr "Dołącz tag" +msgid "Attach tags" +msgstr "" #: links.py:20 msgid "Remove tags" msgstr "Usuń tagi" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "Utwórz nowy tag" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "Usunąć" @@ -62,23 +58,27 @@ msgstr "Usunąć" msgid "Edit" msgstr "Edytuj" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Etykieta" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Kolor" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "Tag" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -106,125 +106,209 @@ msgstr "Załącz tagi do dokumentów" msgid "Remove tags from documents" msgstr "Usuń tagi z dokumentów" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" -msgstr "Utwórz tag" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" +msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Musisz podać co najmniej jeden dokument." +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "Dokument \"%(document)s\" jest już otagowany jako \"%(tag)s\"" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "Dodanie taga \"%(tag)s\" do dokumentu \"%(document)s\" powiodło się." -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "Załącz tag do dokumentu" -msgstr[1] "Załącz tag do dokumentów" -msgstr[2] "Załącz tag do dokumentów" +#: views.py:108 +msgid "Create tag" +msgstr "Utwórz tag" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Musisz wprowadzić conajmniej jeden tag." - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Usunięto tag \"%s\"." +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Błąd podczas usuwania taga \"%(tag)s\":%(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Zostanie usunięty ze wszystkich dokumentów." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgstr[3] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Usunięto tag \"%s\"." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Błąd podczas usuwania taga \"%(tag)s\":%(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "Edytuj tag: %s" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "Dokumenty z tagiem: %s" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "Tagi dla dokumentu: %s" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "Musisz podać conajmniej jeden otagowany dokument." - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "Usuń tag z dokumentu: %s." - -#: views.py:336 -#, python-format -msgid "Remove tag from documents: %s." -msgstr "Usuń tagi z dokumentów: %s." - -#: views.py:344 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:351 +#: views.py:237 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:360 +#: views.py:244 +msgid "Remove" +msgstr "Usuń" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#: views.py:265 +msgid "Tags to be removed." msgstr "" -#: views.py:379 +#: views.py:290 #, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "Dokument \"%(document)s\" nie był otagowany jako \"%(tag)s\"" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "Tag \"%(tag)s\" usunięty z dokumentu \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" +#~ msgstr[2] "2b1f894eebfe4fd9c93a2a121387867c_pl_2" +#~ msgstr[3] "2b1f894eebfe4fd9c93a2a121387867c_pl_3" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -276,9 +360,6 @@ msgstr "Tag \"%(tag)s\" usunięty z dokumentu \"%(document)s\"." #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/pt/LC_MESSAGES/django.mo index e09b344967..d0388f6fb9 100644 Binary files a/mayan/apps/tags/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/pt/LC_MESSAGES/django.po b/mayan/apps/tags/locale/pt/LC_MESSAGES/django.po index 81cde1bb0d..d06060913e 100644 --- a/mayan/apps/tags/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/pt/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -21,40 +21,36 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Etiquetas" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Documentos" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "" #: links.py:17 links.py:24 -msgid "Attach tag" +msgid "Attach tags" msgstr "" #: links.py:20 msgid "Remove tags" msgstr "" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "Eliminar" @@ -62,23 +58,27 @@ msgstr "Eliminar" msgid "Edit" msgstr "Editar" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Nome" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Cor" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -106,123 +106,201 @@ msgstr "Atribuir etiquetas aos documentos" msgid "Remove tags from documents" msgstr "Remover etiquetas de documentos" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Deve fornecer pelo menos um documento." +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "" -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "" -msgstr[1] "" +#: views.py:108 +msgid "Create tag" +msgstr "" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Deve fornecer pelo menos uma etiqueta." - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Etiqueta \"%s\" removida com sucesso." +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Erro ao excluir etiqueta \" %(tag)s \": %(error)s " +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Será removida de todos os documentos." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" msgstr[1] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Etiqueta \"%s\" removida com sucesso." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Erro ao excluir etiqueta \" %(tag)s \": %(error)s " + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "" - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:336 +#: views.py:237 #, python-format -msgid "Remove tag from documents: %s." +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:344 +#: views.py:244 +msgid "Remove" +msgstr "Remover" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:351 +#: views.py:265 +msgid "Tags to be removed." +msgstr "" + +#: views.py:290 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" msgstr "" -#: views.py:360 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" -msgstr "" - -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" -msgstr "" - -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "" - -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -274,9 +352,6 @@ msgstr "" #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/pt_BR/LC_MESSAGES/django.mo index 995c537541..eb541cdc9b 100644 Binary files a/mayan/apps/tags/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/tags/locale/pt_BR/LC_MESSAGES/django.po index 202cf6074d..8f7c0d082a 100644 --- a/mayan/apps/tags/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/pt_BR/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-11-17 23:07+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Aline Freitas \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -21,40 +21,36 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Etiquetas" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "Visualizar" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Documentos" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "Etiquetas para anexar ao documento." - #: links.py:14 msgid "Remove tag" msgstr "Remover Etiqueta" #: links.py:17 links.py:24 -msgid "Attach tag" -msgstr "anexar etiqueta a: %s" +msgid "Attach tags" +msgstr "" #: links.py:20 msgid "Remove tags" msgstr "Remover Etiquetas" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "Criar nova Etiqueta" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "Excluir" @@ -62,23 +58,27 @@ msgstr "Excluir" msgid "Edit" msgstr "Editar" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Label" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Cor" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "Etiqueta" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "Etiqueta do documento" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "Etiquetas do documento" @@ -106,123 +106,201 @@ msgstr "Anexar etiquetas para documentos" msgid "Remove tags from documents" msgstr "Remover etiquetas de documentos" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "Chave primária da etiqueta a ser adicionada." -#: views.py:34 -msgid "Create tag" -msgstr "Criar Etiqueta" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" +msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Deve fornecer, pelo menos, um documento." +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "Documento \"%(document)s\" já está marcado como \"%(tag)s\"" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "Etiqueta \"%(tag)s\" anexada com sucesso para o documento \"%(document)s\"." -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "Adicionar etiqueta ao documento" -msgstr[1] "Adicionar etiqueta aos documentos" +#: views.py:108 +msgid "Create tag" +msgstr "Criar Etiqueta" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Deve fornecer pelo menos uma etiqueta." - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Etiqueta \"%s\" removida com sucesso." +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Erro ao excluir etiqueta \" %(tag)s \": %(error)s " +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Será removido de todos os documentos." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "Apagar a etiqueta selecionada?" msgstr[1] "Apagar as etiquetas selecionadas?" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Etiqueta \"%s\" removida com sucesso." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Erro ao excluir etiqueta \" %(tag)s \": %(error)s " + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "Editar etiqueta:%s" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "Os documentos com a etiqueta: %s" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "Etiqueta para documento: %s" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "Deve fornecer pelo menos um documento marcado." - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "Remove etiqueta do documento: %s." +msgid "Tag remove request performed on %(count)d document" +msgstr "" -#: views.py:336 +#: views.py:237 #, python-format -msgid "Remove tag from documents: %s." -msgstr "Remove etiqueta dos documentos: %s." +msgid "Tag remove request performed on %(count)d documents" +msgstr "" -#: views.py:344 +#: views.py:244 +msgid "Remove" +msgstr "Remover" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" -msgstr "Remover a etiqueta \"%(tag)s\" do documento: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" +msgstr "" -#: views.py:351 +#: views.py:265 +msgid "Tags to be removed." +msgstr "" + +#: views.py:290 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" -msgstr "Remover a etiqueta \"%(tag)s\" dos documentos: %(documents)s?" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:360 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" -msgstr "Remover as etiquetas: %(tags)s do documento: %(document)s?" - -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" -msgstr "Remover as etiquetas %(tags)s dos documentos: %(documents)s?" - -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "Documento \"%(document)s\" não estava etiquetado como \"%(tag)s\"" - -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "Etiqueta \"%(tag)s\" removida com sucesso do documento \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -274,9 +352,6 @@ msgstr "Etiqueta \"%(tag)s\" removida com sucesso do documento \"%(document)s\". #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/ro_RO/LC_MESSAGES/django.mo index 6eedd58ce7..ae58a0dce4 100644 Binary files a/mayan/apps/tags/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/tags/locale/ro_RO/LC_MESSAGES/django.po index f712089923..d1bc2ff65d 100644 --- a/mayan/apps/tags/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/ro_RO/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-04-17 09:44+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Stefaniu Criste \n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -21,40 +21,36 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Etichete" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Documente" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "Elimină eticheta" #: links.py:17 links.py:24 -msgid "Attach tag" -msgstr "Atașează etichetă" +msgid "Attach tags" +msgstr "" #: links.py:20 msgid "Remove tags" msgstr "Elimină etichete" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "Șterge" @@ -62,23 +58,27 @@ msgstr "Șterge" msgid "Edit" msgstr "Modifică" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Etichetă" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Culoare" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "Etichetă" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -106,125 +106,205 @@ msgstr "Atașați etichete la documente" msgid "Remove tags from documents" msgstr "Îndepărtați etichetele de pe documente" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Trebuie să furnizeze cel puțin un document." - -#: views.py:86 +#: views.py:35 #, python-format -msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" -msgstr "Documentul \"%(document)s\" este deja etichetat cu \"%(tag)s\"" +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:96 -#, python-format -msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." -msgstr "Eticheta \"%(tag)s\" a fost atașată cu succes la documentul \"%(document)s\"." +#: views.py:42 +msgid "Attach" +msgstr "" -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Trebuie selectată cel puțin o etichetă." - -#: views.py:182 +#: views.py:54 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Eticheta \"%s\" a fost ștersă cu succes." +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" -#: views.py:186 +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Eroare la ștergerea etichetă \"%(tag)s\": %(error)s" +msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" +msgstr "Documentul \"%(document)s\" este deja etichetat cu \"%(tag)s\"" -#: views.py:196 +#: views.py:99 +#, python-format +msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." +msgstr "Eticheta \"%(tag)s\" a fost atașată cu succes la documentul \"%(document)s\"." + +#: views.py:108 +msgid "Create tag" +msgstr "" + +#: views.py:119 +#, python-format +msgid "Tag delete request performed on %(count)d tag" +msgstr "" + +#: views.py:121 +#, python-format +msgid "Tag delete request performed on %(count)d tags" +msgstr "" + +#: views.py:128 msgid "Will be removed from all documents." msgstr "Va fi eliminată din toate documentele." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Eticheta \"%s\" a fost ștersă cu succes." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Eroare la ștergerea etichetă \"%(tag)s\": %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "Modifică eticheta: %s" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "Documente cu eticheta: %s" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "Etichetele documentului: %s" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "Trebuie să atribuiţi cel puțin o etichetă ." - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "Eliminați eticheta documentului:% s." - -#: views.py:336 -#, python-format -msgid "Remove tag from documents: %s." -msgstr "Eliminați eticheta de la documentele:% s." - -#: views.py:344 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:351 +#: views.py:237 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:360 +#: views.py:244 +msgid "Remove" +msgstr "Şterge" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#: views.py:265 +msgid "Tags to be removed." msgstr "" -#: views.py:379 +#: views.py:290 #, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "Documentul \"%(document)s\" nu a fost etichetat cu \"%(tag)s\"" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "Eticheta \"%(tag)s\" a fost eliminată cu succes din documentul \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" +#~ msgstr[2] "2b1f894eebfe4fd9c93a2a121387867c_pl_2" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -276,9 +356,6 @@ msgstr "Eticheta \"%(tag)s\" a fost eliminată cu succes din documentul \"%(docu #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/ru/LC_MESSAGES/django.mo index b86ee3ea2b..f862fa35bc 100644 Binary files a/mayan/apps/tags/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/ru/LC_MESSAGES/django.po b/mayan/apps/tags/locale/ru/LC_MESSAGES/django.po index f449b78be3..7c5bf53013 100644 --- a/mayan/apps/tags/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/ru/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-11-02 04:15+0000\n" -"Last-Translator: lilo.panic\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,40 +19,36 @@ msgstr "" "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" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Метки" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "Предварительный просмотр" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Документы" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "Метки, прикрепляемые к документу." - #: links.py:14 msgid "Remove tag" msgstr "Снять метку" #: links.py:17 links.py:24 -msgid "Attach tag" -msgstr "Прикрепить метку" +msgid "Attach tags" +msgstr "" #: links.py:20 msgid "Remove tags" msgstr "Снять метки" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "Создать новую метку" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "Удалить" @@ -60,23 +56,27 @@ msgstr "Удалить" msgid "Edit" msgstr "Редактировать" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Надпись" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Цвет" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "Метка" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "Метка документа" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "Метки документов" @@ -104,55 +104,88 @@ msgstr "Прикрепить метки к документам" msgid "Remove tags from documents" msgstr "Удаление тегов из документов" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "Первичный ключ добавляемой метки." -#: views.py:34 -msgid "Create tag" -msgstr "Создать метку" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" +msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Должен быть хотя бы один документ." +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "\"%(document)s\" уже имеет метку \"%(tag)s\"" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "Метка \"%(tag)s\" присвоена \"%(document)s\"." -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "Прикрепить метку к документам" -msgstr[1] "Прикрепить метки к документам" -msgstr[2] "Прикрепить метки к документам" -msgstr[3] "Прикрепить метки к документам" +#: views.py:108 +msgid "Create tag" +msgstr "Создать метку" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Должна быть хотя бы одна метка." - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Метка \"%s\"удалён." +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Ошибка при удалении метки \"%(tag)s\": %(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Будет удален из всех документов." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "Удалить выбранную метку?" @@ -160,71 +193,120 @@ msgstr[1] "Удалить выбранные метки?" msgstr[2] "Удалить выбранные метки?" msgstr[3] "Удалить выбранные метки?" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Метка \"%s\"удалён." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Ошибка при удалении метки \"%(tag)s\": %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "Редактировать метку %s" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "Документы с меткой: %s" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "Метки документа: %s" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "Следует указать хотя бы один помеченный документ." - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "Снять метку с документа %s." +msgid "Tag remove request performed on %(count)d document" +msgstr "" -#: views.py:336 +#: views.py:237 #, python-format -msgid "Remove tag from documents: %s." -msgstr "Снять метку с документов %s." +msgid "Tag remove request performed on %(count)d documents" +msgstr "" -#: views.py:344 +#: views.py:244 +msgid "Remove" +msgstr "Удалить" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" -msgstr "Снять метку \"%(tag)s\" с документа %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" +msgstr "" -#: views.py:351 +#: views.py:265 +msgid "Tags to be removed." +msgstr "" + +#: views.py:290 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" -msgstr "Снять метку \"%(tag)s\" с документов %(documents)s?" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:360 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" -msgstr "Снять метки \"%(tags)s\" с документа %(document)s?" - -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" -msgstr "Снять метки \"%(tags)s\" с документов %(documents)s?" - -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "\"%(document)s\" не помечен как \"%(tag)s\"" - -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "Метка \"%(tag)s\" снята с документа \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" +#~ msgstr[2] "2b1f894eebfe4fd9c93a2a121387867c_pl_2" +#~ msgstr[3] "2b1f894eebfe4fd9c93a2a121387867c_pl_3" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -276,9 +358,6 @@ msgstr "Метка \"%(tag)s\" снята с документа \"%(document)s\" #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/sl_SI/LC_MESSAGES/django.mo index 72bc579bf1..71260eaf8b 100644 Binary files a/mayan/apps/tags/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/tags/locale/sl_SI/LC_MESSAGES/django.po index 78def0b01c..19e9c6ae4f 100644 --- a/mayan/apps/tags/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/sl_SI/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-11-17 08:59+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -19,40 +19,36 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Oznake" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Dokumenti" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "" #: links.py:17 links.py:24 -msgid "Attach tag" +msgid "Attach tags" msgstr "" #: links.py:20 msgid "Remove tags" msgstr "" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "" @@ -60,23 +56,27 @@ msgstr "" msgid "Edit" msgstr "" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "Oznaka" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Barva" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -104,55 +104,88 @@ msgstr "" msgid "Remove tags from documents" msgstr "Odstrani oznake iz dokumenta" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" -msgstr "" - -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Potrebno je podati vsaj en dokument" - -#: views.py:86 +#: views.py:33 #, python-format -msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" +msgid "Tag attach request performed on %(count)d document" msgstr "" -#: views.py:96 +#: views.py:35 #, python-format -msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." +msgid "Tag attach request performed on %(count)d documents" msgstr "" -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "" - -#: views.py:182 +#: views.py:54 #, python-format -msgid "Tag \"%s\" deleted successfully." +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" msgstr "" -#: views.py:186 +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "" -#: views.py:196 +#: views.py:99 +#, python-format +msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." +msgstr "" + +#: views.py:108 +msgid "Create tag" +msgstr "" + +#: views.py:119 +#, python-format +msgid "Tag delete request performed on %(count)d tag" +msgstr "" + +#: views.py:121 +#, python-format +msgid "Tag delete request performed on %(count)d tags" +msgstr "" + +#: views.py:128 msgid "Will be removed from all documents." msgstr "" -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" @@ -160,71 +193,120 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "" + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "" - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:336 +#: views.py:237 #, python-format -msgid "Remove tag from documents: %s." +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:344 +#: views.py:244 +msgid "Remove" +msgstr "" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:351 +#: views.py:265 +msgid "Tags to be removed." +msgstr "" + +#: views.py:290 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" msgstr "" -#: views.py:360 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" -msgstr "" - -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" -msgstr "" - -#: views.py:379 -#, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "" - -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" +#~ msgstr[1] "2b1f894eebfe4fd9c93a2a121387867c_pl_1" +#~ msgstr[2] "2b1f894eebfe4fd9c93a2a121387867c_pl_2" +#~ msgstr[3] "2b1f894eebfe4fd9c93a2a121387867c_pl_3" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -276,9 +358,6 @@ msgstr "" #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/vi_VN/LC_MESSAGES/django.mo index d48b0dd7da..449d0eef1b 100644 Binary files a/mayan/apps/tags/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/tags/locale/vi_VN/LC_MESSAGES/django.po index 7b5e8bbcc4..a8ce7cf28c 100644 --- a/mayan/apps/tags/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/vi_VN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -19,40 +19,36 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "Tags" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "Tài liệu" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "" #: links.py:17 links.py:24 -msgid "Attach tag" +msgid "Attach tags" msgstr "" #: links.py:20 msgid "Remove tags" msgstr "" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "" @@ -60,23 +56,27 @@ msgstr "" msgid "Edit" msgstr "Sửa" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "Màu" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -104,121 +104,197 @@ msgstr "Gắn tag cho tài liệu" msgid "Remove tags from documents" msgstr "Xóa tag từ tài liệu" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "Cần cung cấp ít nhất một tài liệu" +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "Tài liệu \"%(document)s\" đã được tag \"%(tag)s\"" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "Tag \"%(tag)s\" được gắn thành công cho tài liệu \"%(document)s\"." -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "" +#: views.py:108 +msgid "Create tag" +msgstr "" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "Cần cung cấp ít nhất một tag" - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "Tag \"%s\" xóa thành công." +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "Lỗi xóa tag \"%(tag)s\": %(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "Sẽ được xóa trong tất cả tài liệu." -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "Tag \"%s\" xóa thành công." + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "Lỗi xóa tag \"%(tag)s\": %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "Cần cung cấp ít nhất một tài liệu đã được tag" - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "Xóa tag từ tài liệu: %s" - -#: views.py:336 -#, python-format -msgid "Remove tag from documents: %s." -msgstr "Xóa tag từ các tài liệu: %s" - -#: views.py:344 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:351 +#: views.py:237 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:360 +#: views.py:244 +msgid "Remove" +msgstr "Xóa" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#: views.py:265 +msgid "Tags to be removed." msgstr "" -#: views.py:379 +#: views.py:290 #, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "Tài liệu \"%(document)s\" không thể được tag như là \"%(tag)s\"" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "Tag \"%(tag)s\" đã được xóa thành công từ tài liệu \"%(document)s\"." +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -270,9 +346,6 @@ msgstr "Tag \"%(tag)s\" đã được xóa thành công từ tài liệu \"%(doc #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/tags/locale/zh_CN/LC_MESSAGES/django.mo index d900244e2d..ed18239ddf 100644 Binary files a/mayan/apps/tags/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/tags/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/tags/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/tags/locale/zh_CN/LC_MESSAGES/django.po index 9349954ebb..b6d90b91f6 100644 --- a/mayan/apps/tags/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/tags/locale/zh_CN/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -20,40 +20,36 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:33 apps.py:73 apps.py:90 forms.py:34 forms.py:52 links.py:40 -#: links.py:43 models.py:35 permissions.py:7 views.py:139 +#: apps.py:34 apps.py:78 apps.py:85 apps.py:104 apps.py:106 forms.py:31 +#: links.py:40 menus.py:8 models.py:34 permissions.py:7 views.py:181 msgid "Tags" msgstr "标签" -#: apps.py:68 apps.py:80 +#: apps.py:73 apps.py:93 msgid "Preview" msgstr "" -#: apps.py:84 models.py:24 +#: apps.py:97 models.py:22 msgid "Documents" msgstr "文档" -#: forms.py:53 -msgid "Tags to attach to the document." -msgstr "" - #: links.py:14 msgid "Remove tag" msgstr "" #: links.py:17 links.py:24 -msgid "Attach tag" +msgid "Attach tags" msgstr "" #: links.py:20 msgid "Remove tags" msgstr "" -#: links.py:28 +#: links.py:29 msgid "Create new tag" msgstr "" -#: links.py:32 links.py:45 +#: links.py:32 links.py:45 views.py:130 msgid "Delete" msgstr "" @@ -61,23 +57,27 @@ msgstr "" msgid "Edit" msgstr "" -#: models.py:20 +#: links.py:43 +msgid "All" +msgstr "" + +#: models.py:18 msgid "Label" msgstr "" -#: models.py:22 +#: models.py:20 msgid "Color" msgstr "颜色" -#: models.py:34 +#: models.py:33 msgid "Tag" msgstr "" -#: models.py:53 +#: models.py:47 msgid "Document tag" msgstr "" -#: models.py:54 +#: models.py:48 msgid "Document tags" msgstr "" @@ -105,121 +105,197 @@ msgstr "给文档添加标签" msgid "Remove tags from documents" msgstr "从文档中删除标签" -#: serializers.py:46 +#: serializers.py:38 +msgid "" +"Comma separated list of document primary keys to which this tag will be " +"attached." +msgstr "" + +#: serializers.py:85 +msgid "" +"API URL pointing to a tag in relation to the document attached to it. This " +"URL is different than the canonical tag URL." +msgstr "" + +#: serializers.py:105 msgid "Primary key of the tag to be added." msgstr "" -#: views.py:34 -msgid "Create tag" +#: views.py:33 +#, python-format +msgid "Tag attach request performed on %(count)d document" msgstr "" -#: views.py:59 -msgid "Must provide at least one document." -msgstr "必须提供至少一个文件。" +#: views.py:35 +#, python-format +msgid "Tag attach request performed on %(count)d documents" +msgstr "" -#: views.py:86 +#: views.py:42 +msgid "Attach" +msgstr "" + +#: views.py:44 +#| msgid "Attach tags to documents" +msgid "Attach tags to document" +msgid_plural "Attach tags to documents" +msgstr[0] "" + +#: views.py:54 +#, python-format +#| msgid "Attach tag to document: %s." +msgid "Attach tags to document: %s" +msgstr "" + +#: views.py:63 +msgid "Tags to be attached." +msgstr "" + +#: views.py:88 #, python-format msgid "Document \"%(document)s\" is already tagged as \"%(tag)s\"" msgstr "文档 \"%(document)s\"已经被标记为 \"%(tag)s\"" -#: views.py:96 +#: views.py:99 #, python-format msgid "Tag \"%(tag)s\" attached successfully to document \"%(document)s\"." msgstr "文档\"%(document)s\"添加标签\"%(tag)s\"成功。" -#: views.py:110 -msgid "Attach tag to document" -msgid_plural "Attach tag to documents" -msgstr[0] "" +#: views.py:108 +msgid "Create tag" +msgstr "" -#: views.py:160 -msgid "Must provide at least one tag." -msgstr "必须至少提供一个标签" - -#: views.py:182 +#: views.py:119 #, python-format -msgid "Tag \"%s\" deleted successfully." -msgstr "标签 \"%s\" 删除成功" +msgid "Tag delete request performed on %(count)d tag" +msgstr "" -#: views.py:186 +#: views.py:121 #, python-format -msgid "Error deleting tag \"%(tag)s\": %(error)s" -msgstr "删除标签\"%(tag)s\"失败: %(error)s" +msgid "Tag delete request performed on %(count)d tags" +msgstr "" -#: views.py:196 +#: views.py:128 msgid "Will be removed from all documents." msgstr "将从所有文档中移除" -#: views.py:199 +#: views.py:129 +msgid "fa fa-times" +msgstr "" + +#: views.py:132 msgid "Delete the selected tag?" msgid_plural "Delete the selected tags?" msgstr[0] "" -#: views.py:231 +#: views.py:142 +#, python-format +#| msgid "Delete tags" +msgid "Delete tag: %s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "标签 \"%s\" 删除成功" + +#: views.py:156 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "删除标签\"%(tag)s\"失败: %(error)s" + +#: views.py:171 #, python-format msgid "Edit tag: %s" msgstr "" -#: views.py:244 +#: views.py:201 #, python-format msgid "Documents with the tag: %s" msgstr "" -#: views.py:271 +#: views.py:224 #, python-format msgid "Tags for document: %s" msgstr "" -#: views.py:286 -msgid "Must provide at least one tagged document." -msgstr "必须至少提供一个标签文档" - -#: views.py:332 +#: views.py:235 #, python-format -msgid "Remove tag from document: %s." -msgstr "从文档: %s移除标签" - -#: views.py:336 -#, python-format -msgid "Remove tag from documents: %s." -msgstr "从文档: %s移除标签" - -#: views.py:344 -#, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the document: ment)s?" -msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +msgid "Tag remove request performed on %(count)d document" msgstr "" -#: views.py:351 +#: views.py:237 #, python-format -#| msgid "" -#| "u sure you wish to remove the tag \"%(tag)s\" from the documents: ments)s?" -msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +msgid "Tag remove request performed on %(count)d documents" msgstr "" -#: views.py:360 +#: views.py:244 +msgid "Remove" +msgstr "移除" + +#: views.py:246 +#| msgid "Remove tags from documents" +msgid "Remove tags from document" +msgid_plural "Remove tags from documents" +msgstr[0] "" + +#: views.py:256 #, python-format -#| msgid "" -#| "u sure you wish to remove the tags: %(tags)s from the document: ment)s?" -msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#| msgid "Remove tag from document: %s." +msgid "Remove tags from document: %s" msgstr "" -#: views.py:367 -#, python-format -msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#: views.py:265 +msgid "Tags to be removed." msgstr "" -#: views.py:379 +#: views.py:290 #, python-format -msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" -msgstr "文档\"%(document)s\"无标签\"%(tag)s\"" +#| msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s\"" +msgid "Document \"%(document)s\" wasn't tagged as \"%(tag)s" +msgstr "" -#: views.py:388 +#: views.py:300 #, python-format msgid "Tag \"%(tag)s\" removed successfully from document \"%(document)s\"." msgstr "标签\"%(tag)s\"成功从文档\"%(document)s\"移除" +#~ msgid "Must provide at least one document." +#~ msgstr "Must provide at least one document." + +#~ msgid "Attach tag to document" +#~ msgid_plural "Attach tag to documents" +#~ msgstr[0] "2b1f894eebfe4fd9c93a2a121387867c_pl_0" + +#~ msgid "Must provide at least one tag." +#~ msgstr "Must provide at least one tag." + +#~ msgid "Must provide at least one tagged document." +#~ msgstr "Must provide at least one tagged document." + +#~ msgid "Remove tag from documents: %s." +#~ msgstr "Remove tag from documents: %s." + +#~ msgid "Remove the tag \"%(tag)s\" from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tag \"%(tag)s\" from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tag \"%(tag)s\" from the documents: " +#~ "%(documents)s?" + +#~ msgid "Remove the tags: %(tags)s from the document: %(document)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags: %(tags)s from the document: " +#~ "%(document)s?" + +#~ msgid "Remove the tags %(tags)s from the documents: %(documents)s?" +#~ msgstr "" +#~ "Are you sure you wish to remove the tags %(tag)s from the documents: " +#~ "%(documents)s?" + #~ msgid "remove tags" #~ msgstr "remove tags" @@ -271,9 +347,6 @@ msgstr "标签\"%(tag)s\"成功从文档\"%(document)s\"移除" #~ msgid "Document created" #~ msgstr "document" -#~ msgid "Attach tag to document: %s." -#~ msgstr "Attach tag to document: %s." - #~ msgid "Attach tag to documents: %s." #~ msgstr "Attach tag to documents: %s." diff --git a/mayan/apps/tags/serializers.py b/mayan/apps/tags/serializers.py index 63c655ae16..6a8830f792 100644 --- a/mayan/apps/tags/serializers.py +++ b/mayan/apps/tags/serializers.py @@ -7,13 +7,14 @@ from rest_framework.exceptions import ValidationError from rest_framework.reverse import reverse from acls.models import AccessControlList +from documents.models import Document from .models import Tag from .permissions import permission_tag_attach class TagSerializer(serializers.HyperlinkedModelSerializer): - documents = serializers.HyperlinkedIdentityField( + documents_url = serializers.HyperlinkedIdentityField( view_name='rest_api:tag-document-list' ) documents_count = serializers.SerializerMethodField() @@ -23,7 +24,7 @@ class TagSerializer(serializers.HyperlinkedModelSerializer): 'url': {'view_name': 'rest_api:tag-detail'}, } fields = ( - 'color', 'documents', 'documents_count', 'id', 'label', 'url' + 'color', 'documents_count', 'documents_url', 'id', 'label', 'url' ) model = Tag @@ -31,22 +32,82 @@ class TagSerializer(serializers.HyperlinkedModelSerializer): return instance.documents.count() -class NewTagSerializer(serializers.ModelSerializer): +class WritableTagSerializer(serializers.ModelSerializer): + documents_pk_list = serializers.CharField( + help_text=_( + 'Comma separated list of document primary keys to which this tag ' + 'will be attached.' + ), required=False + ) + class Meta: fields = ( - 'color', 'label', 'id' + 'color', 'documents_pk_list', 'id', 'label', ) model = Tag + def _add_documents(self, documents_pk_list, instance): + instance.documents.add( + *Document.objects.filter(pk__in=documents_pk_list.split(',')) + ) + + def create(self, validated_data): + documents_pk_list = validated_data.pop('documents_pk_list', '') + + instance = super(WritableTagSerializer, self).create(validated_data) + + if documents_pk_list: + self._add_documents( + documents_pk_list=documents_pk_list, instance=instance + ) + + return instance + + def update(self, instance, validated_data): + documents_pk_list = validated_data.pop('documents_pk_list', '') + + instance = super(WritableTagSerializer, self).update( + instance, validated_data + ) + + if documents_pk_list: + instance.documents.clear() + self._add_documents( + documents_pk_list=documents_pk_list, instance=instance + ) + + return instance + + +class DocumentTagSerializer(TagSerializer): + document_tag_url = serializers.SerializerMethodField( + help_text=_( + 'API URL pointing to a tag in relation to the document ' + 'attached to it. This URL is different than the canonical ' + 'tag URL.' + ) + ) + + class Meta(TagSerializer.Meta): + fields = TagSerializer.Meta.fields + ('document_tag_url',) + read_only_fields = TagSerializer.Meta.fields + + def get_document_tag_url(self, instance): + return reverse( + 'rest_api:document-tag-detail', args=( + self.context['document'].pk, instance.pk + ), request=self.context['request'], format=self.context['format'] + ) + class NewDocumentTagSerializer(serializers.Serializer): - tag = serializers.IntegerField( + tag_pk = serializers.IntegerField( help_text=_('Primary key of the tag to be added.') ) def create(self, validated_data): try: - tag = Tag.objects.get(pk=validated_data['tag']) + tag = Tag.objects.get(pk=validated_data['tag_pk']) AccessControlList.objects.check_access( permissions=permission_tag_attach, @@ -57,19 +118,4 @@ class NewDocumentTagSerializer(serializers.Serializer): except Exception as exception: raise ValidationError(exception) - return {'tag': tag.pk} - - -class DocumentTagSerializer(TagSerializer): - remove = serializers.SerializerMethodField() - - def get_remove(self, instance): - return reverse( - 'rest_api:document-tag', args=( - self.context['document'].pk, instance.pk, - ), request=self.context['request'], format=self.context['format'] - ) - - class Meta(TagSerializer.Meta): - fields = TagSerializer.Meta.fields + ('remove',) - read_only_fields = TagSerializer.Meta.fields + return {'tag_pk': tag.pk} diff --git a/mayan/apps/tags/tests/test_api.py b/mayan/apps/tags/tests/test_api.py index d714a5a14f..d3aa157326 100644 --- a/mayan/apps/tags/tests/test_api.py +++ b/mayan/apps/tags/tests/test_api.py @@ -3,11 +3,11 @@ from __future__ import unicode_literals from django.contrib.auth import get_user_model from django.core.urlresolvers import reverse from django.test import override_settings - -from rest_framework.test import APITestCase +from django.utils.encoding import force_text from documents.models import DocumentType from documents.tests import TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH +from rest_api.tests import BaseAPITestCase from user_management.tests.literals import ( TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME ) @@ -20,12 +20,10 @@ from .literals import ( ) -class TagAPITestCase(APITestCase): - """ - Test the tag API endpoints - """ - +@override_settings(OCR_AUTO_OCR=False) +class TagAPITestCase(BaseAPITestCase): def setUp(self): + super(TagAPITestCase, self).setUp() self.admin_user = get_user_model().objects.create_superuser( username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD @@ -36,9 +34,26 @@ class TagAPITestCase(APITestCase): ) def tearDown(self): - self.admin_user.delete() + if hasattr(self, 'document_type'): + self.document_type.delete() + super(TagAPITestCase, self).tearDown() - def test_tag_create(self): + def _create_tag(self): + return Tag.objects.create(color=TEST_TAG_COLOR, label=TEST_TAG_LABEL) + + def _document_create(self): + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + document = self.document_type.new_document( + file_object=file_object, + ) + + return document + + def test_tag_create_view(self): response = self.client.post( reverse('rest_api:tag-list'), { 'label': TEST_TAG_LABEL, 'color': TEST_TAG_COLOR @@ -46,7 +61,6 @@ class TagAPITestCase(APITestCase): ) tag = Tag.objects.first() - self.assertEqual(response.data['id'], tag.pk) self.assertEqual(response.data['label'], TEST_TAG_LABEL) self.assertEqual(response.data['color'], TEST_TAG_COLOR) @@ -55,15 +69,60 @@ class TagAPITestCase(APITestCase): self.assertEqual(tag.label, TEST_TAG_LABEL) self.assertEqual(tag.color, TEST_TAG_COLOR) - def test_tag_delete(self): - tag = Tag.objects.create(color=TEST_TAG_COLOR, label=TEST_TAG_LABEL) + def test_tag_create_with_documents_view(self): + response = self.client.post( + reverse('rest_api:tag-list'), { + 'label': TEST_TAG_LABEL, 'color': TEST_TAG_COLOR + } + ) + + tag = Tag.objects.first() + self.assertEqual(response.data['id'], tag.pk) + self.assertEqual(response.data['label'], TEST_TAG_LABEL) + self.assertEqual(response.data['color'], TEST_TAG_COLOR) + + self.assertEqual(Tag.objects.count(), 1) + self.assertEqual(tag.label, TEST_TAG_LABEL) + self.assertEqual(tag.color, TEST_TAG_COLOR) + + def test_tag_delete_view(self): + tag = self._create_tag() self.client.delete(reverse('rest_api:tag-detail', args=(tag.pk,))) self.assertEqual(Tag.objects.count(), 0) - def test_tag_edit(self): - tag = Tag.objects.create(color=TEST_TAG_COLOR, label=TEST_TAG_LABEL) + def test_tag_document_list_view(self): + tag = self._create_tag() + document = self._document_create() + tag.documents.add(document) + + response = self.client.get( + reverse('rest_api:tag-document-list', args=(tag.pk,)) + ) + + self.assertEqual( + response.data['results'][0]['uuid'], force_text(document.uuid) + ) + + def test_tag_edit_via_patch(self): + tag = self._create_tag() + + self.client.patch( + reverse('rest_api:tag-detail', args=(tag.pk,)), + { + 'label': TEST_TAG_LABEL_EDITED, + 'color': TEST_TAG_COLOR_EDITED + } + ) + + tag.refresh_from_db() + + self.assertEqual(tag.label, TEST_TAG_LABEL_EDITED) + self.assertEqual(tag.color, TEST_TAG_COLOR_EDITED) + + def test_tag_edit_via_put(self): + tag = self._create_tag() self.client.put( reverse('rest_api:tag-detail', args=(tag.pk,)), @@ -73,48 +132,51 @@ class TagAPITestCase(APITestCase): } ) - tag = Tag.objects.first() + tag.refresh_from_db() self.assertEqual(tag.label, TEST_TAG_LABEL_EDITED) self.assertEqual(tag.color, TEST_TAG_COLOR_EDITED) - @override_settings(OCR_AUTO_OCR=False) - def test_tag_add_document(self): - tag = Tag.objects.create(color=TEST_TAG_COLOR, label=TEST_TAG_LABEL) - - document_type = DocumentType.objects.create( - label=TEST_DOCUMENT_TYPE - ) - - with open(TEST_SMALL_DOCUMENT_PATH) as file_object: - document = document_type.new_document( - file_object=file_object, - ) + def test_document_attach_tag_view(self): + tag = self._create_tag() + document = self._document_create() self.client.post( reverse('rest_api:document-tag-list', args=(document.pk,)), - {'tag': tag.pk} + {'tag_pk': tag.pk} + ) + self.assertQuerysetEqual(document.tags.all(), (repr(tag),)) + + def test_document_tag_detail_view(self): + tag = self._create_tag() + document = self._document_create() + tag.documents.add(document) + + response = self.client.get( + reverse('rest_api:document-tag-detail', args=(document.pk, tag.pk)) ) - self.assertEqual(tag.documents.count(), 1) + self.assertEqual(response.data['label'], tag.label) - @override_settings(OCR_AUTO_OCR=False) - def test_tag_remove_document(self): - tag = Tag.objects.create(color=TEST_TAG_COLOR, label=TEST_TAG_LABEL) + def test_document_tag_list_view(self): + tag = self._create_tag() + document = self._document_create() + tag.documents.add(document) - document_type = DocumentType.objects.create( - label=TEST_DOCUMENT_TYPE + response = self.client.get( + reverse('rest_api:document-tag-list', args=(document.pk,)) ) + self.assertEqual(response.data['results'][0]['label'], tag.label) - with open(TEST_SMALL_DOCUMENT_PATH) as file_object: - document = document_type.new_document( - file_object=file_object, - ) - + def test_document_tag_remove_view(self): + tag = self._create_tag() + document = self._document_create() tag.documents.add(document) self.client.delete( - reverse('rest_api:document-tag', args=(document.pk, tag.pk)), + reverse( + 'rest_api:document-tag-detail', args=(document.pk, tag.pk) + ), ) self.assertEqual(tag.documents.count(), 0) diff --git a/mayan/apps/tags/urls.py b/mayan/apps/tags/urls.py index bc0f7bd63e..c477e49756 100644 --- a/mayan/apps/tags/urls.py +++ b/mayan/apps/tags/urls.py @@ -63,11 +63,11 @@ api_urls = [ url(r'^tags/(?P[0-9]+)/$', APITagView.as_view(), name='tag-detail'), url(r'^tags/$', APITagListView.as_view(), name='tag-list'), url( - r'^document/(?P[0-9]+)/tags/$', APIDocumentTagListView.as_view(), - name='document-tag-list' + r'^documents/(?P[0-9]+)/tags/$', + APIDocumentTagListView.as_view(), name='document-tag-list' ), url( - r'^document/(?P[0-9]+)/tags/(?P[0-9]+)/$', - APIDocumentTagView.as_view(), name='document-tag' + r'^documents/(?P[0-9]+)/tags/(?P[0-9]+)/$', + APIDocumentTagView.as_view(), name='document-tag-detail' ), ] diff --git a/mayan/apps/tags/views.py b/mayan/apps/tags/views.py index f4debb2e14..133a6caf68 100644 --- a/mayan/apps/tags/views.py +++ b/mayan/apps/tags/views.py @@ -126,7 +126,7 @@ class TagDeleteActionView(MultipleObjectConfirmActionView): result = { 'message': _('Will be removed from all documents.'), - 'submit_icon': _('fa fa-times'), + 'submit_icon': 'fa fa-times', 'submit_label': _('Delete'), 'title': ungettext( 'Delete the selected tag?', diff --git a/mayan/apps/user_management/apps.py b/mayan/apps/user_management/apps.py index 08a7e0a5a3..ddc721a655 100644 --- a/mayan/apps/user_management/apps.py +++ b/mayan/apps/user_management/apps.py @@ -37,8 +37,8 @@ def get_users(): class UserManagementApp(MayanAppConfig): app_url = 'accounts' + has_tests = True name = 'user_management' - test = True verbose_name = _('User management') def ready(self): diff --git a/mayan/apps/user_management/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/ar/LC_MESSAGES/django.mo index 875cfe5317..d199b7af1e 100644 Binary files a/mayan/apps/user_management/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/ar/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/ar/LC_MESSAGES/django.po index 5382d82cd7..0288e769d1 100644 --- a/mayan/apps/user_management/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/ar/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "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" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "إدارة المستخدم" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "البريد الإلكتروني" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "كلمة مرور جديدة" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "تأكيد كلمة المرور" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "" @@ -71,20 +71,20 @@ msgstr "" msgid "Edit" msgstr "تحرير" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "مجموعات" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Users" #: links.py:62 links.py:66 -msgid "Reset password" +msgid "Set password" msgstr "" #: permissions.py:10 @@ -119,114 +119,161 @@ msgstr "تحرير المستخدمين الحاليين" msgid "View existing users" msgstr "عرض المستخدمين الحاليين" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "" - -#: views.py:133 -msgid "Available groups" -msgstr "" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "تم انشاء المستخدم \"%s\" بنجاح." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "يجب أن توفر ما لا يقل عن مستخدم واحد." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Super user and staff user deleting is not allowed, use the admin interface for these cases." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "تم مسح المستخدم \"%s\" بنجاح." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "خطأ أثناء حذف المستخدم \"%(user)s\": %(error)s" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" +msgid "Edit user: %s" msgstr "" -#: views.py:257 -#, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" +#: views.py:204 +msgid "Available groups" msgstr "" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "لا تتطابق كلمات المرور، حاول مرة أخرى." +#: views.py:205 +msgid "Groups joined" +msgstr "" -#: views.py:309 +#: views.py:214 +#, python-format +msgid "Groups of user: %s" +msgstr "" + +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" + +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "ارسال" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Super user and staff user password reseting is not allowed, use the admin interface for these cases." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "نجحت إعادة تعيين كلمة المرور للمستخدم: %s" -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "خطأ أثناء إعادة تعيين كلمة المرور للمستخدم \"%(user)s\": %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "إعادة كلمة السر للمستخدم: %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "إعادة كلمة السر للمستخدمين %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/bg/LC_MESSAGES/django.mo index c140e8308c..c7863646cb 100644 Binary files a/mayan/apps/user_management/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/bg/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/bg/LC_MESSAGES/django.po index ea0c98084a..9b57043a1f 100644 --- a/mayan/apps/user_management/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/bg/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Управление на потребители" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "Електронна поща" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Нова парола" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Потвърждение на парола" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "" @@ -71,20 +71,20 @@ msgstr "" msgid "Edit" msgstr "Редактиране" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Групи" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Потребители" #: links.py:62 links.py:66 -msgid "Reset password" +msgid "Set password" msgstr "" #: permissions.py:10 @@ -119,114 +119,153 @@ msgstr "Редактиране на нови потребители" msgid "View existing users" msgstr "Преглед на съществуващи потребители" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "" - -#: views.py:133 -msgid "Available groups" -msgstr "" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Потребител \"%s\" е създаден успешно." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Трябва да изберете поне един потребител." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Изтриване на потребители от супер потребител и служител не е разрешено. Използвайте администраторския модул за тези случаи." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Потребител \"%s\" е изтрит успешно." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Грешка при изтриването на потребител \"%(user)s\": %(error)s" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" +msgid "Edit user: %s" msgstr "" -#: views.py:257 -#, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" +#: views.py:204 +msgid "Available groups" msgstr "" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "Паролата не съвпада. Опитайте отново." +#: views.py:205 +msgid "Groups joined" +msgstr "" -#: views.py:309 +#: views.py:214 +#, python-format +msgid "Groups of user: %s" +msgstr "" + +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" + +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "Подаване" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Промяна на парола на потребители от супер потребител и служител не е разрешено. Използвайте администраторския модул за тези случаи." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Успешна промяна на парола на потребител %s." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Грешка при промяна на парола на потребител \"%(user)s\": %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Промяна на парола на потребител %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Промяна на парола на потребители %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/bs_BA/LC_MESSAGES/django.mo index b4488727f7..a5ad3726e3 100644 Binary files a/mayan/apps/user_management/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/bs_BA/LC_MESSAGES/django.po index 340a4d0570..609573aa45 100644 --- a/mayan/apps/user_management/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/bs_BA/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: bs_BA\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" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Upravljanje korisnicima" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "Email" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Nova lozinka" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Potvrdite lozinku" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "" @@ -71,20 +71,20 @@ msgstr "" msgid "Edit" msgstr "Urediti" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Grupe" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Korisnici" #: links.py:62 links.py:66 -msgid "Reset password" +msgid "Set password" msgstr "" #: permissions.py:10 @@ -119,114 +119,155 @@ msgstr "Izmjeni postojeće korisnike" msgid "View existing users" msgstr "Pregledaj postojeće korisnike" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "" - -#: views.py:133 -msgid "Available groups" -msgstr "" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Korisnik \"%s\" uspješno kreiran." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Mora biti obebjeđen bar jedan korisnik." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Super user i staff user brisanja nisu dozvoljena, koristite administratorski interface za takve slučajeve" -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Korisnik \"%s\" uspješno obrisan." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Greška brisanja korisnika \"%(user)s\": %(error)s" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" +msgid "Edit user: %s" msgstr "" -#: views.py:257 -#, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" +#: views.py:204 +msgid "Available groups" msgstr "" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "Lozinke se ne podudaraju, pokušajte ponovo." +#: views.py:205 +msgid "Groups joined" +msgstr "" -#: views.py:309 +#: views.py:214 +#, python-format +msgid "Groups of user: %s" +msgstr "" + +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" + +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "Podnijeti" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Super user i staff user reset lozinke nije dozvoljen, koristite administratorski interface za takve slučajeve" -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Uspješno resetovana lozinka za korisnika: %s." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Greška resetovanja lozinke za korisnika \"%(user)s\": %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Resetovanje lozinke za korisnika: %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Resetovanje lozinke za korisnike: %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/da/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/da/LC_MESSAGES/django.mo index fc052d0b9f..acfff8eba9 100644 Binary files a/mayan/apps/user_management/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/da/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/da/LC_MESSAGES/django.po index 4be90828f6..96a74b6ff9 100644 --- a/mayan/apps/user_management/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/da/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Brugerstyring" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Nyt password" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Bekræft password" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "" @@ -71,20 +71,20 @@ msgstr "" msgid "Edit" msgstr "" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "" #: links.py:62 links.py:66 -msgid "Reset password" +msgid "Set password" msgstr "" #: permissions.py:10 @@ -119,114 +119,153 @@ msgstr "Rediger eksisterende brugere" msgid "View existing users" msgstr "Se eksisterende brugere" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "" - -#: views.py:133 -msgid "Available groups" -msgstr "" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Bruger \"%s\" oprettet." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Der skal angives mindst én bruger." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Det er ikke tilladt at slette superbruger og personalebruger. Anvend administrator brugerfladen i disse tilfælde." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Bruger \"%s\" slettet." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Fejl ved sletning af bruger \"%(user)s\": %(error)s" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" +msgid "Edit user: %s" msgstr "" -#: views.py:257 -#, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" +#: views.py:204 +msgid "Available groups" msgstr "" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "De to password stemmer ikke overens, prøv igen." +#: views.py:205 +msgid "Groups joined" +msgstr "" -#: views.py:309 +#: views.py:214 +#, python-format +msgid "Groups of user: %s" +msgstr "" + +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" + +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Det er ikke tilladt at nulstille Superbruger og personale brugeradgangskode. Anvend administrator brugerflade istedet." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Password er blevet nulstillet for bruger: %s." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Fejl ved nulstilling af password for bruger \"%(user)s\": %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Nulstiller password for bruger: %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Nulstiller password for brugerne: %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/de_DE/LC_MESSAGES/django.mo index 9976a65f11..ff84d27080 100644 Binary files a/mayan/apps/user_management/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/de_DE/LC_MESSAGES/django.po index 382fcb8474..2ff1a29332 100644 --- a/mayan/apps/user_management/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/de_DE/LC_MESSAGES/django.po @@ -5,6 +5,7 @@ # Translators: # Translators: # Berny , 2015-2016 +# Jesaja Everling , 2017 # Mathias Behrle , 2014 # Stefan Lodders , 2012 # tetjarediske , 2012 @@ -13,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-04-11 21:48+0000\n" -"Last-Translator: Berny \n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-24 23:01+0000\n" +"Last-Translator: Jesaja Everling \n" "Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,47 +24,47 @@ msgstr "" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Benutzerverwaltung" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "Alle Gruppen." -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "Alle Benutzer" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "Mitglieder" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "Kompletter Name" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "E-Mail" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "Aktiv" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "Verwendbares Passwort" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Neues Passwort" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Passwort bestätigen" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "Erstellen" @@ -75,21 +76,21 @@ msgstr "Löschen" msgid "Edit" msgstr "Bearbeiten" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Gruppen" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "Erstellen" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Benutzer" #: links.py:62 links.py:66 -msgid "Reset password" -msgstr "Passwort" +msgid "Set password" +msgstr "Passwort festlegen" #: permissions.py:10 msgid "Create new groups" @@ -123,114 +124,153 @@ msgstr "Benutzer bearbeiten" msgid "View existing users" msgstr "Benutzer anzeigen" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "Gruppe %s bearbeiten" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "Gruppe %s löschen?" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "Verfügbare Nutzer" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "Gruppenmitglieder" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "Mitglieder von Gruppe %s" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "Benutzer %s bearbeiten" - -#: views.py:133 -msgid "Available groups" -msgstr "Verfügbare Gruppen" - -#: views.py:134 -msgid "Groups joined" -msgstr "Gruppen vereinigt" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "Gruppen von Benutzer %s" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Benutzer \"%s\" erfolgreich angelegt" -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Es muss mindestens ein Benutzer angegeben werden" +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Super User und Staff Benutzer löschen ist nicht erlaubt, benutzen Sie die Administratoren-Oberfläche dafür." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Benutzer \"%s\" erfolgreich gelöscht" -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Fehler beim Löschen des Benutzers \"%(user)s\": %(error)s" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" -msgstr "Benutzer %s löschen?" +msgid "Edit user: %s" +msgstr "Benutzer %s bearbeiten" -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "Verfügbare Gruppen" + +#: views.py:205 +msgid "Groups joined" +msgstr "Gruppen vereinigt" + +#: views.py:214 #, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" -msgstr "Die Benutzer %s löschen?" +msgid "Groups of user: %s" +msgstr "Gruppen von Benutzer %s" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "Passwörter stimmen nicht überein, bitte noch einmal versuchen" +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "Absenden" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Super User und Staff Benutzer löschen ist nicht erlaubt, benutzen Sie die Administratoren-Oberfläche dafür." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Passwort erfolgreich zurückgesetzt für Benutzer %s" -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Fehler beim Zurücksetzen des Passworts für den Benutzer \"%(user)s\": %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Passwort zurücksetzen für Benutzer %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Passwort zurücksetzen für die Benutzer %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/en/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/en/LC_MESSAGES/django.mo index 934b7744aa..de79bb2414 100644 Binary files a/mayan/apps/user_management/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/en/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/en/LC_MESSAGES/django.po index 5e341ed74d..c5bed8015c 100644 --- a/mayan/apps/user_management/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" "PO-Revision-Date: 2012-12-12 06:07+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,52 +18,52 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "User management" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 #, fuzzy msgid "Members" msgstr "members" -#: apps.py:60 +#: apps.py:71 #, fuzzy msgid "Full name" msgstr "full name" -#: apps.py:63 +#: apps.py:74 #, fuzzy msgid "Email" msgstr "email" -#: apps.py:66 +#: apps.py:77 #, fuzzy msgid "Active" msgstr "active" -#: apps.py:72 +#: apps.py:83 #, fuzzy msgid "Has usable password?" msgstr "has usable password?" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "New password" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Confirm password" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 #, fuzzy msgid "Create new group" msgstr "Create new groups" @@ -77,24 +77,24 @@ msgstr "delete" msgid "Edit" msgstr "" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 #, fuzzy msgid "Groups" msgstr "groups" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 #, fuzzy msgid "Create new user" msgstr "Create new users" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 #, fuzzy msgid "Users" msgstr "users" #: links.py:62 links.py:66 #, fuzzy -msgid "Reset password" +msgid "Set password" msgstr "reset password" #: permissions.py:10 @@ -129,60 +129,69 @@ msgstr "Edit existing users" msgid "View existing users" msgstr "View existing users" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, fuzzy, python-format msgid "Edit group: %s" msgstr "edit group: %s" -#: views.py:66 +#: views.py:64 #, fuzzy, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "Delete existing groups" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "" -#: views.py:73 +#: views.py:71 #, fuzzy msgid "Members of groups" msgstr "members of group: %s" -#: views.py:94 +#: views.py:92 #, fuzzy, python-format msgid "Members of group: %s" msgstr "members of group: %s" -#: views.py:127 -#, fuzzy, python-format -msgid "Edit user: %s" -msgstr "edit user: %s" - -#: views.py:133 -msgid "Available groups" -msgstr "" - -#: views.py:134 -#, fuzzy -msgid "Groups joined" -msgstr "groups" - -#: views.py:143 -#, fuzzy, python-format -msgid "Groups of user: %s" -msgstr "groups of user: %s" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "User \"%s\" created successfully." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Must provide at least one user." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#, fuzzy +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "Delete existing users" +msgstr[1] "Delete existing users" + +#: views.py:156 +#, fuzzy, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "Delete existing users" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." @@ -190,33 +199,63 @@ msgstr "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "User \"%s\" deleted successfully." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Error deleting user \"%(user)s\": %(error)s" -#: views.py:255 +#: views.py:198 #, fuzzy, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" -msgstr "Delete existing users" +msgid "Edit user: %s" +msgstr "edit user: %s" -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "" + +#: views.py:205 +#, fuzzy +msgid "Groups joined" +msgstr "groups" + +#: views.py:214 #, fuzzy, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" -msgstr "Delete existing users" +msgid "Groups of user: %s" +msgstr "groups of user: %s" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "Passwords do not match, try again." +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "" + +#: views.py:264 +#, fuzzy +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "reset password" +msgstr[1] "reset password" + +#: views.py:274 +#, fuzzy, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "Reseting password for user: %s" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." @@ -224,25 +263,29 @@ msgstr "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Successfull password reset for user: %s." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Error reseting password for user \"%(user)s\": %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Reseting password for user: %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Reseting password for users: %s" +#, fuzzy +#~| msgid "Delete existing users" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/es/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/es/LC_MESSAGES/django.mo index b61d51bd26..439ba69b01 100644 Binary files a/mayan/apps/user_management/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/es/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/es/LC_MESSAGES/django.po index 8ebc0a5b00..44bd237edf 100644 --- a/mayan/apps/user_management/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/es/LC_MESSAGES/django.po @@ -8,13 +8,13 @@ # jmcainzos , 2015 # Lory977 , 2015 # Roberto Rosario, 2012,2015 -# Roberto Rosario, 2016 +# Roberto Rosario, 2016-2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-05-09 01:33+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-23 03:00+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" @@ -23,47 +23,47 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Administración de usuarios" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "Todos los grupos." -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "Todos los usuarios." -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "Miembros" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "Nombre completo" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "Correo electrónico" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "Activo" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "¿Tiene contraseña utilizable?" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Nueva contraseña" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Confirmar contraseña" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "Crear nuevo grupo" @@ -75,21 +75,21 @@ msgstr "Borrar" msgid "Edit" msgstr "Editar" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Grupos" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "Crear nuevo usuario" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Usuarios" #: links.py:62 links.py:66 -msgid "Reset password" -msgstr "Restablecer contraseña" +msgid "Set password" +msgstr "Asignar contraseña" #: permissions.py:10 msgid "Create new groups" @@ -123,114 +123,153 @@ msgstr "Editar usuarios existentes" msgid "View existing users" msgstr "Ver usuarios existentes" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "Lista separada por comas de llaves primarias de grupos a ser asignados a este usuario." + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "Editar grupo: %s" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "¿Borrar el grupo: %s?" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "Usuarios disponibles" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "Miembros de grupos" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "Miembros del grupo: %s" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "Editar usuario: %s" - -#: views.py:133 -msgid "Available groups" -msgstr "Grupos disponibles." - -#: views.py:134 -msgid "Groups joined" -msgstr "Grupos participados" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "Grupos de usuario: %s" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Usuario \"%s\" creado con éxito." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Debe indicar al menos un usuario." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "Borrar usuario" +msgstr[1] "Borrar usuarios" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "Borrar usuario: %s" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "No se permite eliminar el super usuario y usuario de personal. Use la interfaz de administración para estos casos." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Usuario \"%s\" eliminado con éxito." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Error eliminando el usuario \"%(user)s\": %(error)s " -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" -msgstr "¿Borrar el usuario: %s?" +msgid "Edit user: %s" +msgstr "Editar usuario: %s" -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "Grupos disponibles." + +#: views.py:205 +msgid "Groups joined" +msgstr "Grupos participados" + +#: views.py:214 #, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" -msgstr "¿Borrar los usuarios: %s?" +msgid "Groups of user: %s" +msgstr "Grupos de usuario: %s" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "Las contraseñas no coinciden. Vuelva a intentarlo." +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "Enviar" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "Cambiar contraseña de usuario" +msgstr[1] "Cambiar contraseñas de usuarios" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "Cambiar contraseñas para el usuario: %s" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "No se permite cambiar la contraseña del super usuario y del usuario de personal. Use la interfaz de administración para estos casos." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Contraseña restablecida para el usuario: %s." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Error restaurando la contraseña para el usuario \"%(user)s\": %(error)s " -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Restaurando contraseña del usuario: %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Restaurando la contraseña de los usuarios: %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/fa/LC_MESSAGES/django.mo index 27ae4a936c..f5be6896c0 100644 Binary files a/mayan/apps/user_management/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/fa/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/fa/LC_MESSAGES/django.po index 3a3687b028..77c2f9734f 100644 --- a/mayan/apps/user_management/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/fa/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "مدیریت کاربران" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "عضو" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "نام کامل" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "پست الکترونیکی" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "فعال" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "دارای کلمه عبور قابل قبول؟" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "کلمه عبور جدید" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "تائید کلمه عبور" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "گروه جدید" @@ -71,21 +71,21 @@ msgstr "حذف" msgid "Edit" msgstr "ویرایش" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "گروه ها" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "کاربر جدید" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "کاربران" #: links.py:62 links.py:66 -msgid "Reset password" -msgstr "کلمه عبور جدید" +msgid "Set password" +msgstr "" #: permissions.py:10 msgid "Create new groups" @@ -119,114 +119,151 @@ msgstr "ویرایش کاربران موجود" msgid "View existing users" msgstr "دیدن کاربران موجود" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "ویرایش گروه : %s" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr " اعضای گروه : %s" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "ویرایش کاربر : %s" - -#: views.py:133 -msgid "Available groups" -msgstr "" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "گروه های کاربر : %s" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "کاربر \"%s\" با موفقیت ساخته شد." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "باید حداقل یک کاربر ارئه شود." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "برای حذف از صفحه admin استفاده کنید." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "کاربر \"%s\" با موفقیت حذف شد." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "خطا در حذف کاربر \"%(user)s\": %(error)s" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" +msgid "Edit user: %s" +msgstr "ویرایش کاربر : %s" + +#: views.py:204 +msgid "Available groups" msgstr "" -#: views.py:257 -#, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" +#: views.py:205 +msgid "Groups joined" msgstr "" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "کلمه عبور یکسان نیست دوباره امتحان کنید." +#: views.py:214 +#, python-format +msgid "Groups of user: %s" +msgstr "گروه های کاربر : %s" -#: views.py:309 +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" + +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "ارسال" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "از صفحه admin برای این موارد استفاده کنید." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "ریست موفق کلمه عبور برای کاربر : %s." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "خطا در زمان ریست کلمه عبور کاربر: \"%(user)s\": %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "ریست کلمه عبور کاربر: %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "ریست کلمه عبور کابران : %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/fr/LC_MESSAGES/django.mo index eb2734cea8..19d7644a68 100644 Binary files a/mayan/apps/user_management/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/fr/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/fr/LC_MESSAGES/django.po index b463e91843..ca92eb10e3 100644 --- a/mayan/apps/user_management/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/fr/LC_MESSAGES/django.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-04-28 15:12+0000\n" -"Last-Translator: Baptiste GAILLET \n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,47 +23,47 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Gestion des utilisateurs" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "Tous les groupes." -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "Tous les utilisateurs." -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "Membres" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "Nom complet" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "Courriel" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "Actif" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "Possède un mot de passe utilisable ?" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Nouveau mot de passe" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Confirmer le mot de passe" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "Créer un nouveau groupe" @@ -75,21 +75,21 @@ msgstr "Supprimer" msgid "Edit" msgstr "Modifier" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Groupes" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "Créer un nouvel utilisateur" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Utilisateurs" #: links.py:62 links.py:66 -msgid "Reset password" -msgstr "Reinitialiser le mot de passe" +msgid "Set password" +msgstr "" #: permissions.py:10 msgid "Create new groups" @@ -123,114 +123,153 @@ msgstr "Modifier des utilisateurs existants" msgid "View existing users" msgstr "Afficher les utilisateurs existants" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "Modification du groupe : %s" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "Supprimer le groupe : %s ?" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "Utilisateurs disponibles" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "Membres des groupes" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "Membres du groupe : %s" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "Modifier l'utilisateur : %s" - -#: views.py:133 -msgid "Available groups" -msgstr "Groupes disponibles" - -#: views.py:134 -msgid "Groups joined" -msgstr "Groupes rejoints" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "Membre des groupes : %s" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Utilisateur \"%s\" créé avec succès." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Vous devez indiquer au moins un utilisateur." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "La suppression des comptes super utilisateur et staff n'est pas autorisée ici, veuillez le faire via l'interface d'administration." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Utilisateur \"%s\" supprimé avec succès." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Erreur lors de la suppression de l'utilisateur \"%(user)s\" : %(error)s" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" -msgstr "Supprimer l'utilisateur : %s ?" +msgid "Edit user: %s" +msgstr "Modifier l'utilisateur : %s" -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "Groupes disponibles" + +#: views.py:205 +msgid "Groups joined" +msgstr "Groupes rejoints" + +#: views.py:214 #, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" -msgstr "Supprimer les utilisateurs : %s ?" +msgid "Groups of user: %s" +msgstr "Membre des groupes : %s" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "Les mots de passe ne correspondent pas, veuillez réessayer." +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "Soumettre" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "La réinitialisation des mots de passe pour les comptes super utilisateur et staff n'est pas autorisée ici, veuillez le faire via l'interface d'administration." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Mot de passe ré-initialisé avec succès pour l'utilisateur : %s." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Erreur lors de la ré-initialisation du mot de passe pour l'utilisateur \"%(user)s\" : %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Ré-initialisation du mot de passe pour l'utilisateur : %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Ré-initialisation du mot de passe pour les utilisateurs : %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/hu/LC_MESSAGES/django.mo index 7826a7171e..93e5027046 100644 Binary files a/mayan/apps/user_management/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/hu/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/hu/LC_MESSAGES/django.po index 67048c3845..8375fa98af 100644 --- a/mayan/apps/user_management/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/hu/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" @@ -18,47 +18,47 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "" @@ -70,20 +70,20 @@ msgstr "" msgid "Edit" msgstr "" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "" #: links.py:62 links.py:66 -msgid "Reset password" +msgid "Set password" msgstr "" #: permissions.py:10 @@ -118,114 +118,153 @@ msgstr "" msgid "View existing users" msgstr "" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "" - -#: views.py:133 -msgid "Available groups" -msgstr "" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "" -#: views.py:213 views.py:284 -msgid "Must provide at least one user." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "" -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "" -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" +msgid "Edit user: %s" msgstr "" -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "" + +#: views.py:205 +msgid "Groups joined" +msgstr "" + +#: views.py:214 #, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" +msgid "Groups of user: %s" msgstr "" -#: views.py:300 -msgid "Passwords do not match, try again." +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "" -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "" -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/id/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/id/LC_MESSAGES/django.mo index fe54f6375c..bce649b754 100644 Binary files a/mayan/apps/user_management/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/id/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/id/LC_MESSAGES/django.po index 28b3fb4384..371efd3351 100644 --- a/mayan/apps/user_management/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/id/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" @@ -18,47 +18,47 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "Surel" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "" @@ -70,20 +70,20 @@ msgstr "" msgid "Edit" msgstr "" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "" #: links.py:62 links.py:66 -msgid "Reset password" +msgid "Set password" msgstr "" #: permissions.py:10 @@ -118,114 +118,151 @@ msgstr "" msgid "View existing users" msgstr "" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "" - -#: views.py:133 -msgid "Available groups" -msgstr "" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "" -#: views.py:213 views.py:284 -msgid "Must provide at least one user." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "" -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "" -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" +msgid "Edit user: %s" msgstr "" -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "" + +#: views.py:205 +msgid "Groups joined" +msgstr "" + +#: views.py:214 #, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" +msgid "Groups of user: %s" msgstr "" -#: views.py:300 -msgid "Passwords do not match, try again." +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "" -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "" -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/it/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/it/LC_MESSAGES/django.mo index a7673e6709..951234e1ff 100644 Binary files a/mayan/apps/user_management/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/it/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/it/LC_MESSAGES/django.po index abd1a7dd27..4bd344383f 100644 --- a/mayan/apps/user_management/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/it/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-09-24 11:31+0000\n" -"Last-Translator: Marco Camplese \n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,47 +21,47 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Gestione utenti" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "Tutti i gruppi" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "Tutti gli utenti" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "Membri " -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "Nome completo" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "Email" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "Attivo" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "La password è utilizzabile?" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Nuova password" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Conferma password" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "Crea nuovo gruppo" @@ -73,21 +73,21 @@ msgstr "Cancella" msgid "Edit" msgstr "Modifica" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Gruppi" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "Crea nuovo utente" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Utenti" #: links.py:62 links.py:66 -msgid "Reset password" -msgstr "Reset della password" +msgid "Set password" +msgstr "" #: permissions.py:10 msgid "Create new groups" @@ -121,114 +121,153 @@ msgstr "Modifica utenti " msgid "View existing users" msgstr "Visualizza utenti" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "Modifica gruppo: %s" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "Cancellare il gruppo: %s?" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "Utenti disponibili" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "Membri dei gruppi" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "Membri del gruppo: %s" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "Modifica utente: %s" - -#: views.py:133 -msgid "Available groups" -msgstr "Gruppi disponibili " - -#: views.py:134 -msgid "Groups joined" -msgstr "Gruppi aggiunti" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "Gruppi per l'utente: %s" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Utente \"%s\" creato con successo." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Devi fornire almeno un utente." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Al super utente e utente non è consentito la cancellazione del personale, utilizzare l'interfaccia di amministrazione per questi casi." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Utente \"%s\" cancellato con successo." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Errore nella cancellazione dell'utente \"%(user)s\": %(error)s" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" -msgstr "Cancellare l'utente: %s?" +msgid "Edit user: %s" +msgstr "Modifica utente: %s" -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "Gruppi disponibili " + +#: views.py:205 +msgid "Groups joined" +msgstr "Gruppi aggiunti" + +#: views.py:214 #, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" -msgstr "Cancellare gli utenti: %s?" +msgid "Groups of user: %s" +msgstr "Gruppi per l'utente: %s" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "La password non corrisponde, riprova." +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "Invia" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Al super utente e utente non è consentito di reimpostare la password personale, utilizzare l'interfaccia di amministrazione per questi casi." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Password reimpostata per l'utente: %s." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Errore per il reimpostamento della password per l'utente \"%(user)s\": %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Reimposta la password per l'utente:%s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Reimposta la password per gli utenti:%s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/nl_NL/LC_MESSAGES/django.mo index 46da193108..18c57b08f5 100644 Binary files a/mayan/apps/user_management/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/nl_NL/LC_MESSAGES/django.po index acdee61588..2ef00eaf14 100644 --- a/mayan/apps/user_management/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/nl_NL/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-10-28 08:58+0000\n" -"Last-Translator: Evelijn Saaltink \n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,47 +20,47 @@ msgstr "" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Gebruikersbeheer" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "Alle groepen." -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "Alle gebruikers." -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "Leden" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "Volledige naam" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "Email" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "Actief" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "Heeft bruikbaar wachtwoord?" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Nieuw wachtwoord" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Bevestig wachtwoord" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr " Maak nieuwe groep aan" @@ -72,21 +72,21 @@ msgstr "Verwijder" msgid "Edit" msgstr "Bewerken" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Groepen" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "Maak nieuwe gebruiker aan" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Gebruikers" #: links.py:62 links.py:66 -msgid "Reset password" -msgstr "Verander wachtwoord" +msgid "Set password" +msgstr "" #: permissions.py:10 msgid "Create new groups" @@ -120,114 +120,153 @@ msgstr "Bewerk bestaande gebruikers" msgid "View existing users" msgstr "Bekijk bestaande gebruikers" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "Bewerk groep: %s" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "Verwijder de groep: %s?" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "Beschikbare gebruikers" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "Leden van de groepen" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "Leden van de groep: %s" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "Bewerk gebruiker: %s" - -#: views.py:133 -msgid "Available groups" -msgstr "Beschikbare groepen" - -#: views.py:134 -msgid "Groups joined" -msgstr "Lid van groepen" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "Groepen van gebruiker: %s" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Gebuiker \"%s\" is succesvol aangemaakt." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "U dient minimaal één gebruiker in te voeren." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Super gebruiker en medewerker verwijderen is niet toegestaan, gebruik de admin gebruiker voor deze zaken." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Gebruiker \"%s\" succesvol verwijderd." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Fout tijdens het verwijderen van gebruiker \"%(user)s\": %(error)s" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" -msgstr "Verwijder de gebruiker: %s?" +msgid "Edit user: %s" +msgstr "Bewerk gebruiker: %s" -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "Beschikbare groepen" + +#: views.py:205 +msgid "Groups joined" +msgstr "Lid van groepen" + +#: views.py:214 #, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" -msgstr "Verwijder de gebruikers: %s?" +msgid "Groups of user: %s" +msgstr "Groepen van gebruiker: %s" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "Wachtwoord is niet het zelfde, probeer het opnieuw." +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "Verstuur" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Super gebruiker en medewerker wachtwoord aanpassen is niet toegestaan, gebruik de admin gebruiker voor deze zaken." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Succesvol wachtwoord aangepast voor gebruiker: %s" -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Fout tijdens het veranderen van het wachtwoord voor gebruiker \"%(user)s\": %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Wachtwoord aanpassen voor gebruiker: %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Wachtwoord aanpassen voor gebruikers: %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/pl/LC_MESSAGES/django.mo index 358f2966ca..fe38c40837 100644 Binary files a/mayan/apps/user_management/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/pl/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/pl/LC_MESSAGES/django.po index b8edad641e..893c587819 100644 --- a/mayan/apps/user_management/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/pl/LC_MESSAGES/django.po @@ -11,57 +11,57 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-08-04 09:31+0000\n" -"Last-Translator: Daniel Winiarski \n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Zarządzanie użytkownikami" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "Wszystkie grupy." -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "Wszyscy użytkownicy." -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "Członkowie" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "Pełna nazwa" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "Email" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "Aktywny" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "Posiada hasło?" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Nowe hasło" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Potwierdź hasło" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "Utwórz nową grupę" @@ -73,21 +73,21 @@ msgstr "Usunąć" msgid "Edit" msgstr "Edytuj" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Grupy" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "Tworzenie nowego użytkownika" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Użytkownicy" #: links.py:62 links.py:66 -msgid "Reset password" -msgstr "Zresetować hasło" +msgid "Set password" +msgstr "" #: permissions.py:10 msgid "Create new groups" @@ -121,114 +121,157 @@ msgstr "Edycja istniejących użytkowników" msgid "View existing users" msgstr "Zobacz istniejących użytkowników" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "Edycja grupy: %s" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "Usunąć grupę: %s?" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "Dostępni użytkownicy" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "Członkowie grup" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "Członkowie grupy: %s" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "Edytuj użytkownika: %s" - -#: views.py:133 -msgid "Available groups" -msgstr "Dostępne grupy" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "Grupy użytkownika: %s" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Użytkownik \"%s\" został utworzony pomyślnie." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Musi podać co najmniej jednego użytkownika." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Super user oraz staff user usuwanie nie jest możliwa , należy użyć interfejsu administratora w takich przypadkach." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Użytkownik \"%s\" został usunięta." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Błąd podczas usuwania użytkownika \" %(user)s \": %(error)s " -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" -msgstr "Usunąć użytkownika: %s?" +msgid "Edit user: %s" +msgstr "Edytuj użytkownika: %s" -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "Dostępne grupy" + +#: views.py:205 +msgid "Groups joined" +msgstr "" + +#: views.py:214 #, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" -msgstr "Usunąć użytkowników: %s?" +msgid "Groups of user: %s" +msgstr "Grupy użytkownika: %s" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "Hasła nie pasują, spróbuj ponownie." +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "Wykonaj" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Super user oraz staff user reset nie jest możliwa , należy użyć interfejsu administratora w takich przypadkach." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Pomyślne resetowania hasła użytkownika:%s." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Błąd podczas resetowania hasło użytkownika \" %(user)s \": %(error)s " -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Resetowanie hasła użytkownika:%s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Resetowanie hasła dla użytkowników:%s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/pt/LC_MESSAGES/django.mo index f67d8e8835..8ef1c8a064 100644 Binary files a/mayan/apps/user_management/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/pt/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/pt/LC_MESSAGES/django.po index ca1d75b3cf..54b1c638c4 100644 --- a/mayan/apps/user_management/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/pt/LC_MESSAGES/django.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" @@ -22,47 +22,47 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Gestão de utilizadores" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "Todos os grupos." -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "Todos os utilziadores." -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "Membros" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "Nome completo" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "Correio eletrónico" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "Ativo" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Nova senha" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Contrassenha" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "Criar novo grupo" @@ -74,21 +74,21 @@ msgstr "Eliminar" msgid "Edit" msgstr "Editar" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Grupos" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "Criar novo utilziador" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Utilizadores" #: links.py:62 links.py:66 -msgid "Reset password" -msgstr "Repor senha" +msgid "Set password" +msgstr "" #: permissions.py:10 msgid "Create new groups" @@ -122,114 +122,153 @@ msgstr "Editar utilizadores existentes" msgid "View existing users" msgstr "Ver utilizadores existentes" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "Editar grupo: %s" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "Eliminar o grupo: %s?" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "Membros de grupos" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "Membros do grupo: %s" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "Editar utilizador: %s" - -#: views.py:133 -msgid "Available groups" -msgstr "Grupos disponíveis" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "Grupos do utilizador: %s" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Utilizador \"%s\" criado com sucesso." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Deve indicar pelo menos um utilizador." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Não é permitida a eliminação de administradores ou membros da equipa, utilize a interface de administrador para estes casos." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Utilizador \"%s\" eliminado com sucesso." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Erro ao eliminar o utilizador \"%(user)s\": %(error)s " -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" -msgstr "Eliminar o utilizador: %s?" +msgid "Edit user: %s" +msgstr "Editar utilizador: %s" -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "Grupos disponíveis" + +#: views.py:205 +msgid "Groups joined" +msgstr "" + +#: views.py:214 #, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" -msgstr "Eliminar os utilizadores: %s?" +msgid "Groups of user: %s" +msgstr "Grupos do utilizador: %s" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "As senhas não coincidem, tente novamente." +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "Submeter" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Não é permitido redefinir a senha de administradores ou de membros da equipa, utilize a interface de administrador para estes casos." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Reposição de senha bem sucedida para o utilizador: %s." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Erro ao redefinir a senha para o utilizador \"%(user)s\": %(error)s " -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "A redefinir a senha para o utilizador: %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "A redefinir a senha para os utilizadores: %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/pt_BR/LC_MESSAGES/django.mo index 6b391e6508..536dade9a5 100644 Binary files a/mayan/apps/user_management/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/pt_BR/LC_MESSAGES/django.po index 77fb0ea810..331e5278d3 100644 --- a/mayan/apps/user_management/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/pt_BR/LC_MESSAGES/django.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-11-10 19:25+0000\n" -"Last-Translator: Aline Freitas \n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,47 +23,47 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Gerenciar usuários" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "Todos os grupos." -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "Todos os usuários." -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "Membros" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "Nome Completo" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "E-mail" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "Ativo" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "tem senha usável?" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Nova senha" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Confirmar senha" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "Criar novo Grupo" @@ -75,21 +75,21 @@ msgstr "excluir" msgid "Edit" msgstr "Editar" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Grupos" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "Criar novo Usuário" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Usuários" #: links.py:62 links.py:66 -msgid "Reset password" -msgstr "redefinir senha" +msgid "Set password" +msgstr "" #: permissions.py:10 msgid "Create new groups" @@ -123,114 +123,153 @@ msgstr "Editar usuários existentes" msgid "View existing users" msgstr "Ver os usuários existentes" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "Editar grupo:%s" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "Apagar o grupo: %s?" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "Usuários disponíveis" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "Membros dos grupos" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "membros do grupo: %s" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "Editar usuário:%s" - -#: views.py:133 -msgid "Available groups" -msgstr "Grupos disponíveis" - -#: views.py:134 -msgid "Groups joined" -msgstr "Grupos ingressados" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "Grupos de usuário:%s" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Usuário \"%s\" criado com sucesso." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Deve fornecer pelo menos um usuário." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Excluir super usuário e usuário pessoal não é permitido, use a interface de administração para esses casos." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Usuário \"%s\" removido com sucesso." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Erro ao excluir usuário \"%(user)s\": %(error)s " -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" -msgstr "Apagar o usuário: %s?" +msgid "Edit user: %s" +msgstr "Editar usuário:%s" -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "Grupos disponíveis" + +#: views.py:205 +msgid "Groups joined" +msgstr "Grupos ingressados" + +#: views.py:214 #, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" -msgstr "Apagar os usuários: %s?" +msgid "Groups of user: %s" +msgstr "Grupos de usuário:%s" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "Senhas não coincidem, tente novamente." +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "Enviar" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Redefinir senha de super usuário e usuário pessoal não é permitido, use a interface de administração para esses casos." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Redefinição de senha do usuário bem-sucedida: %s." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Erro de redefinição de senha para o usuário \"%(user)s\": %(error)s " -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Redefinindo senha para o usuário: %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Redefinindo senha para os usuários: %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/ro_RO/LC_MESSAGES/django.mo index ea975af9f4..31921ef89b 100644 Binary files a/mayan/apps/user_management/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/ro_RO/LC_MESSAGES/django.po index 078f8a89f3..aeef147a47 100644 --- a/mayan/apps/user_management/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/ro_RO/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-04-17 11:31+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Stefaniu Criste \n" "Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" @@ -20,47 +20,47 @@ msgstr "" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Management utilizatori" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "Toate grupurile." -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "Toți utilizatorii." -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "Membri" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "Numele întreg" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "email" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "Activ" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Parolă nouă" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Confirmați parola" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "" @@ -72,21 +72,21 @@ msgstr "Șterge" msgid "Edit" msgstr "Editează" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Grupuri" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Utilizatorii" #: links.py:62 links.py:66 -msgid "Reset password" -msgstr "Schimbare parolă" +msgid "Set password" +msgstr "" #: permissions.py:10 msgid "Create new groups" @@ -120,114 +120,155 @@ msgstr "Editați utilizatorii existenți" msgid "View existing users" msgstr "Vizualizați utilizatorii existenți" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "Modificați grupul: %s" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "Ștergeți grupul: %s?" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "Utilizatori disponibili" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "Membrii grupului: %s" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "Modificați utilizatorul: %s" - -#: views.py:133 -msgid "Available groups" -msgstr "Grupuri disponibile" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "Grupurile utilizatorului: %s" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Utilizator \"%s\" creat cu succes." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Trebuie să furnizeze cel puțin un utilizator." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Super-utilizator și personalul ștergerea utilizator nu este permisă, utilizați interfata de administrare pentru aceste cazuri." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Utilizatorul \"%s\" a fost șters cu succes." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Eroare la ștergerea utilizator \"%(user)s\": %(error)s" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" -msgstr "Ștergeți utilizatorul: %s?" +msgid "Edit user: %s" +msgstr "Modificați utilizatorul: %s" -#: views.py:257 -#, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" +#: views.py:204 +msgid "Available groups" +msgstr "Grupuri disponibile" + +#: views.py:205 +msgid "Groups joined" msgstr "" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "Parolele nu corespund, încercați din nou." +#: views.py:214 +#, python-format +msgid "Groups of user: %s" +msgstr "Grupurile utilizatorului: %s" -#: views.py:309 +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" + +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "Trimiteţi" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Super utilizator și parola de utilizator personalul resetarea nu este permisă, utilizați interfata de administrare pentru aceste cazuri." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Resetarea parolei cu succes pentru utilizator:% s." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Eroare resetarea parola pentru utilizatorul %(user)s\": %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Resetarea parola pentru utilizator:% s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Resetarea parolei pentru utilizatori:% s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/ru/LC_MESSAGES/django.mo index f378e611ee..4c447f6d85 100644 Binary files a/mayan/apps/user_management/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/ru/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/ru/LC_MESSAGES/django.po index 2ef9664596..3d6f2b0553 100644 --- a/mayan/apps/user_management/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/ru/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-07-14 10:52+0000\n" -"Last-Translator: lilo.panic\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" +"Last-Translator: Roberto Rosario\n" "Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,47 +19,47 @@ msgstr "" "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" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Управление пользователями" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "Все группы" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "Все пользователи." -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "Участники" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "Полное имя" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "Email" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "Активен" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "Есть действующий пароль?" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Новый пароль" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Подтвердите пароль" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "Создать новую группу" @@ -71,21 +71,21 @@ msgstr "Удалить" msgid "Edit" msgstr "Редактировать" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Группы" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "Создать нового пользователя" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Пользователи" #: links.py:62 links.py:66 -msgid "Reset password" -msgstr "Сбросить пароль" +msgid "Set password" +msgstr "" #: permissions.py:10 msgid "Create new groups" @@ -119,114 +119,157 @@ msgstr "Редактирование существующих пользоват msgid "View existing users" msgstr "Просмотр существующих пользователей" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "Редактировать группу: %s" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "Удалить группу: %s?" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "Доступные пользователи" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "Участники групп" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "Член групп: %s" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "Редактировать пользователя: %s." - -#: views.py:133 -msgid "Available groups" -msgstr "Доступные группы" - -#: views.py:134 -msgid "Groups joined" -msgstr "Участник групп" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "Группы пользователя: %s" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Пользователь \"%s\" создан." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Должен быть хотя бы один пользователь." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Удаление суперпользователя и персонала не допускается, используйте интерфейс администратора для этих случаев." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Пользователь \"%s\" удален." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Ошибка при удалении пользователя \"%(user)s\": %(error)s" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" -msgstr "Удалить пользователя: %s?" +msgid "Edit user: %s" +msgstr "Редактировать пользователя: %s." -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "Доступные группы" + +#: views.py:205 +msgid "Groups joined" +msgstr "Участник групп" + +#: views.py:214 #, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" -msgstr "Удалить пользователей: %s?" +msgid "Groups of user: %s" +msgstr "Группы пользователя: %s" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "Пароли не совпадают, попробуйте еще раз." +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "Подтвердить" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Сброс паролей суперпользователя и персонала не допускается, используйте интерфейс администратора для этих случаев." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Пароль пользователя %s сброшен." -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Ошибка сброса пароля для пользователя \"%(user)s\": %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Сброс пароля пользователя: %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Сброс пароля для пользователей: %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/sl_SI/LC_MESSAGES/django.mo index ea0561d947..c12fc41e0e 100644 Binary files a/mayan/apps/user_management/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/sl_SI/LC_MESSAGES/django.po index 34ae367601..8fea53742f 100644 --- a/mayan/apps/user_management/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/sl_SI/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-11-17 08:53+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" @@ -18,47 +18,47 @@ msgstr "" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "" @@ -70,20 +70,20 @@ msgstr "" msgid "Edit" msgstr "" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "Skupine" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "Uporabniki" #: links.py:62 links.py:66 -msgid "Reset password" +msgid "Set password" msgstr "" #: permissions.py:10 @@ -118,114 +118,157 @@ msgstr "" msgid "View existing users" msgstr "" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "" - -#: views.py:133 -msgid "Available groups" -msgstr "" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "" -#: views.py:213 views.py:284 -msgid "Must provide at least one user." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "" -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "" -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" +msgid "Edit user: %s" msgstr "" -#: views.py:257 +#: views.py:204 +msgid "Available groups" +msgstr "" + +#: views.py:205 +msgid "Groups joined" +msgstr "" + +#: views.py:214 #, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" +msgid "Groups of user: %s" msgstr "" -#: views.py:300 -msgid "Passwords do not match, try again." +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" msgstr "" -#: views.py:309 +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "" -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "" -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/vi_VN/LC_MESSAGES/django.mo index 9ea5073f9f..75acf873e6 100644 Binary files a/mayan/apps/user_management/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/vi_VN/LC_MESSAGES/django.po index 3957372185..7f8904799e 100644 --- a/mayan/apps/user_management/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/vi_VN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "Quản lý người dùng" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "Email" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "Mật khẩu mới" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "Xác nhận mật khẩu" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "" @@ -71,20 +71,20 @@ msgstr "" msgid "Edit" msgstr "Sửa" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "" #: links.py:62 links.py:66 -msgid "Reset password" +msgid "Set password" msgstr "" #: permissions.py:10 @@ -119,114 +119,151 @@ msgstr "Sửa người dùng" msgid "View existing users" msgstr "Xem người dùng" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "" - -#: views.py:133 -msgid "Available groups" -msgstr "" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "Người dùng \"%s\" được tạo thành công." -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "Cần cung cấp ít nhất một user." +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "Super user and staff user deleting is not allowed, use the admin interface for these cases." -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "Người dùng \"%s\" đã xóa thành công." -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "Lỗi xóa người dùng \"%(user)s\": %(error)s" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" +msgid "Edit user: %s" msgstr "" -#: views.py:257 -#, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" +#: views.py:204 +msgid "Available groups" msgstr "" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "Mật khẩu không khớp, thử lại." +#: views.py:205 +msgid "Groups joined" +msgstr "" -#: views.py:309 +#: views.py:214 +#, python-format +msgid "Groups of user: %s" +msgstr "" + +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" + +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "Super user and staff user password reseting is not allowed, use the admin interface for these cases." -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "Reset mật khẩu thành công: %s" -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "Lỗi reset mật khẩu \"%(user)s\": %(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "Đang reset mật khẩu: %s" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "Đang reset mật khẩu: %s" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/user_management/locale/zh_CN/LC_MESSAGES/django.mo index 0a232bc2c5..fa30ad85c4 100644 Binary files a/mayan/apps/user_management/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/user_management/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/user_management/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/user_management/locale/zh_CN/LC_MESSAGES/django.po index 1a7f90fae0..0164b01b0b 100644 --- a/mayan/apps/user_management/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/user_management/locale/zh_CN/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 02:57-0400\n" -"PO-Revision-Date: 2016-03-21 21:12+0000\n" +"POT-Creation-Date: 2017-04-21 12:24-0400\n" +"PO-Revision-Date: 2017-04-21 16:27+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -19,47 +19,47 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:37 permissions.py:7 +#: apps.py:42 permissions.py:7 msgid "User management" msgstr "用户管理" -#: apps.py:47 +#: apps.py:58 msgid "All the groups." msgstr "" -#: apps.py:51 +#: apps.py:62 msgid "All the users." msgstr "" -#: apps.py:56 links.py:30 +#: apps.py:67 links.py:30 msgid "Members" msgstr "" -#: apps.py:60 +#: apps.py:71 msgid "Full name" msgstr "" -#: apps.py:63 +#: apps.py:74 msgid "Email" msgstr "电子邮件" -#: apps.py:66 +#: apps.py:77 msgid "Active" msgstr "" -#: apps.py:72 +#: apps.py:83 msgid "Has usable password?" msgstr "" -#: forms.py:16 +#: forms.py:18 msgid "New password" msgstr "新密码" -#: forms.py:19 +#: forms.py:21 msgid "Confirm password" msgstr "确认密码" -#: links.py:14 views.py:29 +#: links.py:14 views.py:27 msgid "Create new group" msgstr "" @@ -71,20 +71,20 @@ msgstr "" msgid "Edit" msgstr "" -#: links.py:26 links.py:34 links.py:50 views.py:52 +#: links.py:26 links.py:34 links.py:50 views.py:50 msgid "Groups" msgstr "用户组" -#: links.py:38 views.py:197 +#: links.py:38 views.py:116 msgid "Create new user" msgstr "" -#: links.py:54 links.py:70 views.py:169 +#: links.py:54 links.py:70 views.py:240 msgid "Users" msgstr "用户" #: links.py:62 links.py:66 -msgid "Reset password" +msgid "Set password" msgstr "" #: permissions.py:10 @@ -119,114 +119,151 @@ msgstr "编辑现有用户" msgid "View existing users" msgstr "查看现有用户" -#: views.py:45 +#: serializers.py:29 +msgid "Comma separated list of group primary keys to assign this user to." +msgstr "" + +#: serializers.py:51 +msgid "List of group primary keys to which to add the user." +msgstr "" + +#: views.py:43 #, python-format msgid "Edit group: %s" msgstr "" -#: views.py:66 +#: views.py:64 #, python-format #| msgid "Delete existing groups" msgid "Delete the group: %s?" msgstr "" -#: views.py:72 +#: views.py:70 msgid "Available users" msgstr "" -#: views.py:73 +#: views.py:71 msgid "Members of groups" msgstr "" -#: views.py:94 +#: views.py:92 #, python-format msgid "Members of group: %s" msgstr "" -#: views.py:127 -#, python-format -msgid "Edit user: %s" -msgstr "" - -#: views.py:133 -msgid "Available groups" -msgstr "" - -#: views.py:134 -msgid "Groups joined" -msgstr "" - -#: views.py:143 -#, python-format -msgid "Groups of user: %s" -msgstr "" - -#: views.py:188 +#: views.py:126 #, python-format msgid "User \"%s\" created successfully." msgstr "创建用户\"%s\"成功" -#: views.py:213 views.py:284 -msgid "Must provide at least one user." -msgstr "必须提供至少一个用户" +#: views.py:135 +#, python-format +msgid "User delete request performed on %(count)d user" +msgstr "" -#: views.py:230 +#: views.py:137 +#, python-format +msgid "User delete request performed on %(count)d users" +msgstr "" + +#: views.py:146 +#| msgid "Delete existing users" +msgid "Delete user" +msgid_plural "Delete users" +msgstr[0] "" + +#: views.py:156 +#, python-format +#| msgid "Delete existing users" +msgid "Delete user: %s" +msgstr "" + +#: views.py:168 msgid "" "Super user and staff user deleting is not allowed, use the admin interface " "for these cases." msgstr "不允许删除超级和管理用户,请使用管理接口来操作。" -#: views.py:237 +#: views.py:176 #, python-format msgid "User \"%s\" deleted successfully." msgstr "删除用户\"%s\"成功" -#: views.py:241 +#: views.py:182 #, python-format msgid "Error deleting user \"%(user)s\": %(error)s" msgstr "删除用户: \"%(user)s\": %(error)s出错。" -#: views.py:255 +#: views.py:198 #, python-format -#| msgid "Delete existing users" -msgid "Delete the user: %s?" +msgid "Edit user: %s" msgstr "" -#: views.py:257 -#, python-format -#| msgid "Delete existing users" -msgid "Delete the users: %s?" +#: views.py:204 +msgid "Available groups" msgstr "" -#: views.py:300 -msgid "Passwords do not match, try again." -msgstr "密码不匹配,请再试一次" +#: views.py:205 +msgid "Groups joined" +msgstr "" -#: views.py:309 +#: views.py:214 +#, python-format +msgid "Groups of user: %s" +msgstr "" + +#: views.py:252 +#, python-format +msgid "Password change request performed on %(count)d user" +msgstr "" + +#: views.py:254 +#, python-format +msgid "Password change request performed on %(count)d users" +msgstr "" + +#: views.py:262 +msgid "Submit" +msgstr "提交" + +#: views.py:264 +msgid "Change user password" +msgid_plural "Change users passwords" +msgstr[0] "" + +#: views.py:274 +#, python-format +#| msgid "Reseting password for user: %s" +msgid "Change password for user: %s" +msgstr "" + +#: views.py:294 msgid "" "Super user and staff user password reseting is not allowed, use the admin " "interface for these cases." msgstr "不允许重置超级和管理用户的密码,请使用管理接口来操作。" -#: views.py:319 +#: views.py:304 #, python-format msgid "Successfull password reset for user: %s." msgstr "重置用户:%s密码成功" -#: views.py:325 +#: views.py:310 #, python-format msgid "Error reseting password for user \"%(user)s\": %(error)s" msgstr "重置用户\"%(user)s\"密码出错:%(error)s" -#: views.py:342 -#, python-format -msgid "Reseting password for user: %s" -msgstr "重置用户%s的密码" +#~ msgid "Must provide at least one user." +#~ msgstr "Must provide at least one user." -#: views.py:344 -#, python-format -msgid "Reseting password for users: %s" -msgstr "重置用户:%s的密码" +#~ msgid "Delete the users: %s?" +#~ msgstr "Delete existing users" + +#~ msgid "Passwords do not match, try again." +#~ msgstr "Passwords do not match, try again." + +#~ msgid "Reseting password for users: %s" +#~ msgstr "Reseting password for users: %s" #~ msgid "" #~ "Super user and staff user editing is not allowed, use the admin interface " diff --git a/mayan/apps/user_management/tests/test_api.py b/mayan/apps/user_management/tests/test_api.py index d5cb0284f9..7aec08c631 100644 --- a/mayan/apps/user_management/tests/test_api.py +++ b/mayan/apps/user_management/tests/test_api.py @@ -4,7 +4,7 @@ from django.contrib.auth import get_user_model from django.contrib.auth.models import Group from django.core.urlresolvers import reverse -from rest_framework.test import APITestCase +from rest_api.tests import BaseAPITestCase from ..tests.literals import ( TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME @@ -16,12 +16,10 @@ from .literals import ( ) -class UserManagementUserAPITestCase(APITestCase): - """ - Test the user API endpoints - """ - +class UserManagementUserAPITestCase(BaseAPITestCase): def setUp(self): + super(UserManagementUserAPITestCase, self).setUp() + self.admin_user = get_user_model().objects.create_superuser( username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD @@ -33,6 +31,7 @@ class UserManagementUserAPITestCase(APITestCase): def tearDown(self): get_user_model().objects.all().delete() + super(UserManagementUserAPITestCase, self).tearDown() def test_user_create(self): response = self.client.post( @@ -249,12 +248,9 @@ class UserManagementUserAPITestCase(APITestCase): self.assertEqual(group.user_set.first(), user) -class UserManagementGroupAPITestCase(APITestCase): - """ - Test the groups API endpoints - """ - +class UserManagementGroupAPITestCase(BaseAPITestCase): def setUp(self): + super(UserManagementGroupAPITestCase, self).setUp() self.admin_user = get_user_model().objects.create_superuser( username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD @@ -266,6 +262,7 @@ class UserManagementGroupAPITestCase(APITestCase): def tearDown(self): get_user_model().objects.all().delete() + super(UserManagementGroupAPITestCase, self).tearDown() def test_group_create(self): response = self.client.post( diff --git a/mayan/celery.py b/mayan/celery.py index 4c3995bc8b..ca8fc9cdad 100644 --- a/mayan/celery.py +++ b/mayan/celery.py @@ -2,12 +2,13 @@ from __future__ import absolute_import, unicode_literals import os -from celery import Celery from django.conf import settings +from .runtime import celery_class + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mayan.settings.production') -app = Celery('mayan') +app = celery_class('mayan') app.config_from_object('django.conf:settings') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) diff --git a/mayan/conf.py b/mayan/conf.py new file mode 100644 index 0000000000..5ddcfc8185 --- /dev/null +++ b/mayan/conf.py @@ -0,0 +1,18 @@ +""" +This module should be called settings.py but is named conf.py to avoid a +class with the mayan/settings/* module +""" + +from __future__ import unicode_literals + +from django.utils.translation import ugettext_lazy as _ + +from smart_settings import Namespace + +namespace = Namespace(name='mayan', label=_('Mayan')) + +setting_celery_class = namespace.add_setting( + help_text=_('The class used to instanciate the main Celery app.'), + global_name='MAYAN_CELERY_CLASS', + default='celery.Celery' +) diff --git a/mayan/runtime.py b/mayan/runtime.py new file mode 100644 index 0000000000..16a382b63e --- /dev/null +++ b/mayan/runtime.py @@ -0,0 +1,5 @@ +from django.utils.module_loading import import_string + +from .conf import setting_celery_class + +celery_class = import_string(setting_celery_class.value) diff --git a/mayan/settings/base.py b/mayan/settings/base.py index d51aa6db70..485f19b51d 100644 --- a/mayan/settings/base.py +++ b/mayan/settings/base.py @@ -79,6 +79,7 @@ INSTALLED_APPS = ( 'smart_settings', 'user_management', # Mayan EDMS + 'cabinets', 'checkouts', 'document_comments', 'document_indexing', @@ -86,7 +87,9 @@ INSTALLED_APPS = ( 'document_states', 'documents', 'events', - 'folders', + # Disable the folders app by default + # Will be removed in the next version + # 'folders', 'linking', 'mailer', 'metadata', @@ -234,6 +237,8 @@ STATICFILES_FINDERS = ( 'compressor.finders.CompressorFinder', ) +TEST_RUNNER = 'common.tests.runner.MayanTestRunner' + # --------- Django compressor ------------- COMPRESS_CSS_FILTERS = ( 'compressor.filters.css_default.CssAbsoluteFilter', @@ -272,7 +277,6 @@ CELERY_ROUTES = {} CELERY_TASK_SERIALIZER = 'json' CELERY_TIMEZONE = 'UTC' CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' -TEST_RUNNER = 'djcelery.contrib.test_runner.CeleryTestSuiteRunner' # ------------ CORS ------------ CORS_ORIGIN_ALLOW_ALL = True # ------ Django REST Swagger ----- diff --git a/mayan/settings/production.py b/mayan/settings/production.py index fa8a4c4ae6..908b6704e3 100644 --- a/mayan/settings/production.py +++ b/mayan/settings/production.py @@ -7,10 +7,12 @@ from . import * # NOQA ALLOWED_HOSTS = ['*'] TEMPLATES[0]['OPTIONS']['loaders'] = ( - 'django.template.loaders.cached.Loader', ( - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', - ) + ( + 'django.template.loaders.cached.Loader', ( + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', + ) + ), ) CELERY_ALWAYS_EAGER = False diff --git a/mayan/settings/testing/base.py b/mayan/settings/testing/base.py index 663ff4fb9b..47b8dce5c9 100644 --- a/mayan/settings/testing/base.py +++ b/mayan/settings/testing/base.py @@ -2,7 +2,6 @@ from __future__ import absolute_import, unicode_literals from .. import * # NOQA -DEBUG = True INSTALLED_APPS += ('test_without_migrations',) TEMPLATES[0]['OPTIONS']['loaders'] = ( 'django.template.loaders.filesystem.Loader', diff --git a/mayan/settings/testing/docker.py b/mayan/settings/testing/docker.py new file mode 100644 index 0000000000..7bfeca8048 --- /dev/null +++ b/mayan/settings/testing/docker.py @@ -0,0 +1,16 @@ +from __future__ import absolute_import + +from ..production import * # NOQA + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': 'postgres', + 'USER': 'postgres', + 'HOST': 'localhost', + 'PORT': '5432', + } +} + +BROKER_URL = 'redis://127.0.0.1:6379/0' +CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0' diff --git a/requirements/base.txt b/requirements/base.txt index 6c356cd62c..eba2daee7a 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -6,7 +6,7 @@ cssmin==0.2.0 django-activity-stream==0.6.3 django-autoadmin==1.1.1 -django-celery==3.1.17 +django-celery==3.2.1 django-colorful==1.2 django-compressor==2.1 django-cors-headers==1.2.2 @@ -14,7 +14,7 @@ django-downloadview==1.9 django-formtools==2.0 django-pure-pagination==0.3.0 django-model-utils==2.6.1 -django-mptt==0.8.7 +django-mptt>=0.8.7 django-qsstats-magic==0.7.2 django-rest-swagger==0.3.10 django-stronghold==0.2.8 @@ -30,7 +30,7 @@ pycountry==1.20 pyocr==0.4.5 python-dateutil==2.5.3 python-gnupg==0.3.9 -python-magic==0.4.12 +python-magic==0.4.13 pytz==2016.7 -sh==1.12.9 +sh==1.12.11 diff --git a/requirements/common.txt b/requirements/common.txt index c44993f923..dd32f1dc0b 100644 --- a/requirements/common.txt +++ b/requirements/common.txt @@ -1,2 +1,2 @@ -r base.txt -Django==1.10.5 +Django==1.10.6 diff --git a/requirements/development.txt b/requirements/development.txt index 5ccc8383f0..9c880e718a 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -12,7 +12,10 @@ ipython==5.1.0 safety==0.5.1 +pypandoc==1.3.3 + transifex-client==0.12.2 +twine==1.8.1 wheel==0.29.0 diff --git a/requirements/documentation.txt b/requirements/documentation.txt index 39a179f93c..ad15512f47 100644 --- a/requirements/documentation.txt +++ b/requirements/documentation.txt @@ -1,4 +1,4 @@ -Sphinx==1.5.1 +Sphinx==1.5.3 sphinx-autobuild==0.6.0 sphinxcontrib-blockdiag==1.5.5 diff --git a/setup.py b/setup.py index 7572512447..3d8a0caec0 100644 --- a/setup.py +++ b/setup.py @@ -56,43 +56,47 @@ def find_packages(directory): return packages install_requires = """ -Django==1.9.11 -Pillow==3.1.2 -PyYAML==3.11 -celery==3.1.19 +Pillow==4.0.0 +PyYAML==3.12 +celery==3.1.24 cssmin==0.2.0 -django-activity-stream==0.6.0 +Django==1.10.6 +django-activity-stream==0.6.3 django-autoadmin==1.1.1 -django-celery==3.1.17 -django-colorful==1.1.0 -django-compressor==2.0 -django-cors-headers==1.1.0 +django-celery==3.2.1 +django-colorful==1.2 +django-compressor==2.1 +django-cors-headers==1.2.2 django-downloadview==1.9 -django-filetransfers==0.1.0 -django-formtools==1.0 +django-formtools==2.0 django-pure-pagination==0.3.0 -django-model-utils==2.4 -django-mptt==0.8.0 +django-model-utils==2.6.1 +django-mptt>=0.8.7 django-qsstats-magic==0.7.2 -django-rest-swagger==0.3.4 -django-stronghold==0.2.7 -django-suit==0.2.16 +django-rest-swagger==0.3.10 +django-stronghold==0.2.8 +django-suit==0.2.23 django-widget-tweaks==1.4.1 djangorestframework==3.3.2 djangorestframework-recursive==0.1.1 -fusepy==2.0.2 +fusepy==2.0.4 pdfminer==20140328 -pycountry==1.19 -pytesseract==0.1.6 -python-dateutil==2.4.2 +pycountry==1.20 +pyocr==0.4.5 +python-dateutil==2.5.3 python-gnupg==0.3.9 -python-magic==0.4.10 -pytz==2015.4 -sh==1.11 +python-magic==0.4.13 +pytz==2016.7 +sh==1.12.11 """.split() -with open('README.rst') as f: - readme = f.read() +try: + import pypandoc + readme = pypandoc.convert_file('README.md', 'rst') +except (IOError, ImportError): + with open('README.md') as f: + readme = f.read() + with open('HISTORY.rst') as f: history = f.read() diff --git a/tox.ini b/tox.ini index a64387cd66..25f3cdf28e 100644 --- a/tox.ini +++ b/tox.ini @@ -12,7 +12,7 @@ basepython = py35: python3.5 commands= - coverage run {envdir}/bin/django-admin.py runtests --settings=mayan.settings.testing --nomigrations + coverage run {envdir}/bin/django-admin.py test --mayan-apps --settings=mayan.settings.testing --nomigrations deps = -rrequirements/testing-no-django.txt